9

C++11 標準を使用して記述されたコードがあり、g++ バージョンは 4.4.6 です。私が知る限り、C++11 はサポートされているはずです (4.3 以降)。

ただし、フラグを使用してコンパイルしようとすると-std=c++11 -std=gnu++11、エラーが繰り返されます

cc1plus: error: unrecognized command line option `-std=c++11`
cc1plus: error: unrecognized command line option `-std=gnu++11`

でコンパイルすると-std=c++0x、次のようなエラーが生成されます

DeviceInfo.cpp:22: error: expected initializer before ‘:’ token

次のコード行に対応します。

for (cl::Platform& plat : platforms)

これは C++11 固有の構文ですか? (私にはそうは見えませんが、このコードはすべて例として提供されているため、コンパイラで提供されているとおりに機能するはずです。)

何か助けはありますか?

4

3 に答える 3

13

-std=c++11設定は、GCC のより新しいバージョンでサポートされています。初期の C++11 の初期サポートは、-std=c++0x設定によって有効化されました。これはおそらくあなたが試してみるべきものです。

はい、for使用しようとしている構文は主に C++11 構文です。

于 2013-05-09T07:32:34.013 に答える
3

範囲ベースの for ループが 4.6 以降でサポートされているようです。

このページでは、C++11 機能の GCC サポートを示します。

于 2013-05-09T07:38:09.300 に答える
1
for (cl::Platform& plat : platforms)

はい、C++11 固有の使用法です。一方、GCC 4.7 以降では-std=c++11オプション付きの C++11 がサポートされます。

于 2013-05-09T07:32:40.480 に答える