相關主題: Why does const imply internal linkage in c++, when it doesn't in C?警告: '知名度' 屬性被忽略 - 符號可見 - C++/GCC
我下面GCC visibility wiki能見度添加到我的共享庫。
它,當我編譯我的源文件生成一個警告
warning: 'visibility' attribute ignored [-Wattributes]
這裏是我的代碼:
// my_shared_lib.h
#if __GNUC__ >= 4
#define DLL_API __attribute__((visibility("default")))
#define DLL_LOCAL __attribute__((visibility("hidden")))
#else
#define DLL_API
#define DLL_LOCAL
#endif
DLL_LOCAL const int my_local_var;
它產生以下警告在編譯:
my_shared_lib.h: 'visibility' attribute ignored [-Wattributes]
DLL_LOCAL const int my_local_var;
^
這裏的整棟建築信息:
make all
Building file: ../src/my_shared_lib.cc
Invoking: Cross G++ Compiler
g++-mp-4.8 -O3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"src/my_shared_lib.d" -MT"src/my_shared_lib.d" -o "src/my_shared_lib.o" "../src/my_shared_lib.cc"
my_shared_lib.h: 'visibility' attribute ignored [-Wattributes]
DLL_LOCAL const int my_local_var;
^
Finished building: ../src/my_shared_lib.cc
任何人都可以告訴我如何沉默這個警告,爲什麼這個警告發生?
是因爲const variable
默認爲hidden
?
PS。 我正在使用g ++ 4.8
非常詳細的解答!謝謝! – 2014-09-24 23:46:44
我相信這也適用於'靜態' – EdH 2015-04-06 00:37:02