【发布时间】:2021-10-14 14:12:06
【问题描述】:
我正在搜索 gcc 的编译器标志,如果可能的话,还有 clang 和 Microsoft 编译器,如果调用非 void 函数而不使用返回值,则会触发警告(-Werror 错误)这个:
int test() {
return 4;
}
int main(void) {
test(); //should trigger a warning
int number = test(); //shouldn't trigger the warning
return 0;
}
如果没有这样的编译器标志,也许有办法告诉clang静态分析器抱怨它。
编辑:为了澄清我最初的问题:我实际上是指使用返回值,而不仅仅是分配它。
【问题讨论】:
-
注意 - 使用
int main (void)而不是void。 . -
这会导致很多不必要的警告。例如,每次调用
printf()都会产生投诉——他们返回打印的字符数,但没有人真正关心。 -
@Barmar,我可以看到这对于非库函数可能很方便。当我将返回值添加到以前的 void 函数时,我必须更改签名的其余部分,以寻找所有使用它的地方。
-
或者您可以使用
grep,或IDE 的内置搜索工具,例如“使用位置”。 -
这里列出了所有 GCC 警告选项:gcc.gnu.org/onlinedocs/gcc/Warning-Options.html