web-dev-qa-db-ja.com

c ++ 17 macでコンパイルする

-std = c ++ 17でコンパイルできません。

error: invalid value 'c++17' in '-std=c++17'

ただし、Xcodeとclangを更新します。

私のClangバージョンは:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-Apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin`

そして、オプションのように最新のヘッダーをロードします、私はしなければなりません

 #include <experimental/optional>

の代わりに

 #include <optional>
8
Max0u

Xcodeは、ヘッダーや実際のコンパイラを含む独自の完全なツールチェーンをもたらします。

Apple LLVM version 9.0.0 (clang-900.0.39.2)(Xcode 9.2に付属)は、フラグ_-std=c++17_が古すぎるため、フラグの使用をサポートしていません。オプションのヘッダーは、_experimental/_フォルダーにのみ含まれます。これが_#include <experimental/optional>_が必要な理由です

Xcode 9.2に付属するコンパイラを使用してc ++ 17サポートでプログラムをコンパイルするには、_-std=c++1z_フラグを使用する必要があります。

Xcode 9.3には、_-std=c++17_フラグをサポートするApple LLVM version 9.1.0 (clang-902.0.30)が同梱されます。ただし、optionalヘッダーは、現在でも_experimental/_サブディレクトリの下にあります。これはベータ期間中に変更される可能性があります。

7
p0fi

これが私がこのテストで得るものです:

#include <experimental/optional>


int main(int, char* []) {
    return 0;
}

g++ -std=c++17 -o test test.cpp
error: invalid value 'c++17' in '-std=c++17'
g++ -std=c++1z -o test test.cpp

C++ 1z引数を試しましたか?また、私のテストは-std = c ++ 1z引数を指定せずにコンパイルできます。

私はあなたよりも新しいバージョンのOSXを使っていると思います:

Target: x86_64-Apple-darwin17.4.0
1
Dennis

フラグとして-std=c++1zを使用する必要があります。

1
Demosthenes