尽管__attribute __((已使用)),全局在Xcode中仍然无法解决

时间:2015-05-13 07:20:05

标签: c++ linker global dead-code

我正在构建一个Xcode静态库项目,其中我将一个类定义为:

class New
{
    public:
    New() {
        // Do something
    };
    static New fNew;
};

__attribute__((used)) New New::fNew;

静态全局fNew不应该被链接器剥离死代码,因为它已被强制声明为((used))。但我看不到构造函数被调用为New。知道为什么会这样吗?

修改 当我添加一个虚拟函数来返回指向 fNew

的指针时
void* getDummyReference()
{
    return (void*)&New::fNew;
}

并从同一静态库项目中的另一个文件调用该函数,我不再观察到该问题,并按预期调用构造函数。

为什么即使使用属性((已使用))也会剥离静态全局?

0 个答案:

没有答案