海湾合作委员会:未使用的回报警告

时间:2015-09-24 08:10:33

标签: c gcc

问题陈述

我使用返回整数来通过我的代码传播错误。如果我不小心忘记传播错误(即当我忘记使用返回整数时),我希望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 ...

或者使用WallWextra或其他选项。

毋庸置疑,我的编译器不会提供任何这些选项的警告。我的一个错误已经令我沮丧地找到了......

2 个答案:

答案 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)

gccclang中,您可以使用warn_unused_result属性标记特定的函数,如果您忽略了结果,它会告诉您(假设您& #39;当然没有使用-Wno-unused-result标志。

不幸的是,我不知道如何让这些编译器将其全局应用于所有函数,您必须根据具体情况明确地执行此操作。< / p>

在任何情况下,全局执行此操作会导致printf之类的一些令人烦恼的行为,而您可能不会关心返回代码。