从库中废弃全局变量的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