代码之家  ›  专栏  ›  技术社区  ›  xdavidliu

XCode项目对C++标准的选择没有得到尊重

  •  1
  • xdavidliu  · 技术社区  · 2 年前

    我在玩XCode和C++,我注意到我通过单击左侧边栏中的我的项目更改了C++标准(即C++98、C++11、GNU17等)。请参阅本文底部的屏幕截图。

    然而,当我换成C++98时,C++语句 auto x = 6; 仍然编译并运行,没有任何投诉。这很糟糕,因为auto需要C++11,所以我将标准设置为C++98显然无效。注意,当我说“仍然编译并运行”时,我的意思是我在单击XCode中的“播放”按钮。

    我在这里设想了几种可能性:

    • 有一个超级隐藏的“保存”按钮,我错过了,我需要点击 使设置保持不变
    • “点击XCode中的播放按钮”的动作实际上并没有使用新的设置,而是使用了旧的设置(并且需要一些类似“清理”的仪式,我需要先这样做,才能让“播放”按钮尊重新的项目设置

    有人知道我做错了什么吗?2021,我在macOS monterey上使用XCode 13.4.1(截至2022年7月的最新版本),macbook pro 14英寸,M1 pro。

    enter image description here

    1 回复  |  直到 2 年前
        1
  •  3
  •   Sam Varshavchik    2 年前

    你还忽略了另一种可能性:

    auto x = 6;
    

    在史前时代,这恰好是一个完全有效的声明。 auto 完全是指其他的东西,并且可以追溯到C。没有人使用它,所以这个关键字在C++11中被重新定义。但是,这恰好是有效代码。您可能想尝试以下操作:

    auto y = "hello world";
    

    然后验证C++编译器在不同C++级别的行为。