我使用返回整数来通过我的代码传播错误。如果我不小心忘记传播错误(即当我忘记使用返回整数时),我希望gcc
向我提供警告。
考虑这个非常简单的例子test.c
:
// header
int test ( int a );
// function
int test ( int a )
{
if ( a<0 ) return 1;
return 0;
}
// main program
int main ( void )
{
int a = -10;
test(a);
return 0;
}
$ gcc -Wunused-result main.c
Warning: main.c:19 ... unused return ...
或者使用Wall
或Wextra
或其他选项。
毋庸置疑,我的编译器不会提供任何这些选项的警告。我的一个错误已经令我沮丧地找到了......
答案 0 :(得分:1)
// header
int test ( int a ) __attribute__ ((warn_unused_result));
// function
int test ( int a )
{
if ( a<0 ) return 1;
return 0;
}
// main program
int main ( void )
{
int a = -10;
test(a);
return 0;
}
现在应该可以了。
答案 1 :(得分:0)
在gcc
和clang
中,您可以使用warn_unused_result
属性标记特定的函数,如果您忽略了结果,它会告诉您(假设您& #39;当然没有使用-Wno-unused-result
标志。
不幸的是,我不知道如何让这些编译器将其全局应用于所有函数,您必须根据具体情况明确地执行此操作。< / p>
在任何情况下,全局执行此操作会导致printf
之类的一些令人烦恼的行为,而您可能不会关心返回代码。