我在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文件中。
我的问题是:
[编辑(添加)]:在主程序中调用该函数,如下所示:
mylist[0]();
如果我将mylist []声明移到.c文件中,则不会出现警告错误。
答案 0 :(得分:1)
这是一个解决方案:
#define MARKASUSED(x) if (0) { x(); }
static void myfunc(void) {
printf("in myfunc()");
MARKASUSED(myfunc)
}
'if(0)'应该导致编译器通过任何类型的优化来删除代码,因此它根本不会影响运行时。
我不认为这个解决方案是理想的,但它符合我的直接需求。