Xcode 7.3.1及更高版本中的执行不当

时间:2016-06-28 13:19:44

标签: c++ xcode macos xcode7

我有一个现有的应用程序,它使用了几个静态库(我正在编译所有这些库)。我在命令行上使用makeclang进行编译,而不使用IDE。在Xcode 7.3之前,所有编译和执行都如我所料。使用Xcode 7.3,在我的发布版本中(添加了-O2)我发现了虚拟内联函数的奇怪行为 - 有时它们会完全返回垃圾值。这似乎发生在只有 虚拟内联方法的类中,例如:

class MyClass
{
    public:
       virtual ~MyClass() { }
       virtual int foo()  { return 1; } 
};

在我对该问题的调查中(尝试了几个相关的编译标志),似乎添加-fno-inlines和/或-fvisibility-inlines-hidden解决了这个问题,程序按预期执行。但是,根据我的理解,这些只是关于如何优化的提示,而不应该影响程序执行(具体来说,第二个应该只影响我不使用的DSO)。这引出了几个问题:

  • 搜索Apple支持论坛,我找不到任何类似错误的引用。这是一个已知问题吗?
  • 这段代码是否格格不入?如果是这样,有什么方法可以从编译器(例如通过诊断)获得有关问题的反馈吗?
  • 为什么我提到的编译器标志解决了这个问题?我误解了他们的意思吗?

0 个答案:

没有答案