2017-01-27 9 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 
関連する問題