今天看到一段案例代码,觉得挺有意思的:
void ouch(int sig)
{
printf("OUCH! - I got signal %d
", sig);
(void) signal(SIGINT, SIG_DFL);
}
这里在signal函数前写了void,到底为啥要写呢?在网上随便搜索了一下,没有找到相关的回答。
自己思考了一下,得出了一个自以为是的结论:
!!!note
void不能用来定义类型,但是却可以做一个表态,即表态signal函数,没有必要考虑它的返回值。
另外,在定义一个变量而未使用时,通常会有一个warning,也可以通过这样的方式去避免warning:
int a = 0; // 如果没有使用,会提示:warning: unused variable a
(void)a; // 没有任何效果,但是避免了warning