相关主题: 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