局部静态变量链接

时间:2016-04-28 09:17:43

标签: c++ clang static-methods linkage

有人可以解释为什么这两个片段的编译行为不同(至少在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

0 个答案:

没有答案