我的意思是不将其值分配给变量并使用它。
例如:
int foo(void);
void main()
{
foo();
}
int foo()
{
return(5);
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能得到任何警告
许多函数返回一个值并执行副作用,但是它们通常仅用于副作用。
例如,printf()打印输出并还返回已打印的字符数。但是大多数情况下,返回值并不有趣,因此我们不会在任何地方分配它。fclose()返回一个成功指示符,但是如果程序失败,通常是无能为力的,因此他们不必费心检查结果。
必须编写类似以下内容的工作很繁琐:
(void)printf(...);
(void)fclose(f);
Run Code Online (Sandbox Code Playgroud)
一直以来,编译器通常不会警告不使用结果而调用非void函数。
在某些情况下这可能是个问题。在某些函数中,您确实应该使用返回值,但是不使用它通常是一个错误。例如,realloc()返回新指针,但是许多初学者只是假设它将始终调整旧指针指向的分配大小。
因此,某些IDE可能具有应警告的功能列表。但是编译器通常不那么精确。