2017-01-27 48 views
0

我有一個C靜態庫與全局變量。 我的目標是在程序中使用庫中的全局變量時,在編譯時向用戶輸出消息。從庫中廢棄全局變量的GCC消息

我試圖標記變量爲__attribute__((deprecated))。但即使設置了-Werror,我也需要用戶才能建立。

因此,我試圖添加#pragma GCC diagnostic warning "-Wdeprecated-declarations",但它似乎只在庫中活躍,而不是如果用戶鏈接庫。

回答

1

您可以使用鏈接器來代替,例如, 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