从库中废弃全局变量的GCC消息
问题描述:
我有一个C静态库与全局变量。 我的目标是在程序中使用库中的全局变量时,在编译时向用户输出消息。从库中废弃全局变量的GCC消息
我试图标记变量为__attribute__((deprecated))
。但即使设置了-Werror
,我也需要用户才能建立。
因此,我试图添加#pragma GCC diagnostic warning "-Wdeprecated-declarations"
,但它似乎只在库中活跃,而不是如果用户链接库。
答
您可以使用链接器来代替,例如, ninjalj's blog。
这里有一个简单的例子:
$ cat myvar.c
int myvar = 0;
static const char myvar_warning[] __attribute__((section(".gnu.warning.myvar"))) =
"myvar is deprecated";
$ cat main.c
extern int myvar;
int main() {
return myvar;
}
$ gcc tmp.c tmp2.c
/tmp/cc2uM5Vx.o: In function `main':
tmp.c:(.text+0x6): warning: myvar is deprecated