有人可以解释为什么这两个片段的编译行为不同(至少在OSX上):
struct A {
static int func()
{
static int value __attribute__((weak));
return value++;
}
};
但是
//struct A
//{
/*static*/ int func()
{
static int value __attribute__((weak));
return value++;
}
//}
失败并显示错误:
1.cpp:6:35: error: weak declaration cannot have internal linkage
static int value __attribute__((weak));
编译命令行:
clang++ 1.cpp -shared