未使用函数的Eclipse警告错误

时间:2014-04-15 01:56:20

标签: eclipse eclipse-cdt

我在Eclipse中得到一个“未使用的静态函数”警告,代码如下:

my.c:

static void myfunc(void) {  // This line gives unused warning.
   printf("in myfunc()");
}
typedef void(* myfunctyp)(void);

#include "my_generated.h"

my_generated.h:

myfunctyp mylist[] = {
   myfunc,
   0
}

my_generated.h是生成的代码,因此我不能将数组放在.c文件中。

我的问题是:

  1. 如何让Eclipse查看包含文件,以便准确确定该函数是否已被使用?
  2. 如果我不能获得#1,我如何在源代码中添加一个指示器来告诉eclipse这个特殊的警告是否合适?我知道我可以更改Window-> Preferences-> Code Analysis - >未使用的静态函数配置可以消除错误,但我想要一些“坚持”来源。
  3. [编辑(添加)]:在主程序中调用该函数,如下所示:

    mylist[0]();
    

    如果我将mylist []声明移到.c文件中,则不会出现警告错误。

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

#define MARKASUSED(x) if (0) { x(); }

static void myfunc(void) {
   printf("in myfunc()");
   MARKASUSED(myfunc)
}

'if(0)'应该导致编译器通过任何类型的优化来删除代码,因此它根本不会影响运行时。

我不认为这个解决方案是理想的,但它符合我的直接需求。