我有一个带有全局变量的 C 静态库。 我的目标是每当程序中使用库中的全局变量时,在编译时向用户打印一条消息。
我尝试将变量标记为 __attribute__((deprecated))
。但即使设置了 -Werror
,我也需要用户能够构建。
因此,我尝试添加#pragma GCC 诊断警告“-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 main.c myvar.c
/tmp/cc2uM5Vx.o: In function `main':
tmp.c:(.text+0x6): warning: myvar is deprecated
关于c - 关于库中已弃用的全局变量使用的 GCC 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889847/