C++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 vector<vector<int> > li; 6 li.push_back({1, 2}); 7}
というファイルを、Sublime Text(Version 3.2.2, Build 3211)上でコンパイルすると、以下のようなエラーが出力されました:
/Users/***/Desktop/***/main.cpp:248:18: error: expected expression li.push_back({1, 2}); ^ 1 error generated. [Finished in 1.9s with exit code 1] [shell_cmd: g++ "/Users/***/Desktop/***/main.cpp" -o "/Users/***/Desktop/***/main" && "/Users/***/Desktop/***/main"] [dir: /Users/***/Desktop/***] [path: /usr/bin:/bin:/usr/sbin:/sbin]
一方、これをCodeforcesが提供しているカスタムテストで言語はGNU++17 (7.3.0)で実行したところ、エラーは何も出力されませんでした。
わかる範囲で、ターミナルでc++ -vと実行したところ得られた情報は以下です:
Apple clang version 12.0.0 (clang-1200.0.26.2) Target: x86_64-apple-darwin21.3.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
(yaito3014様のご指摘により追記)g++ -vと実行した場合は以下です:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 12.0.0 (clang-1200.0.26.2) Target: x86_64-apple-darwin21.3.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
上のようなコンパイルエラーが出力されるのはどのようなことが起因しているのでしょうか。初学者につき何が足りていないのか現段階では不明なところがあり、不足している情報がありましたらご指摘ください。素人質問にて恐縮ですが、お力添え頂ける箇所が御座いましたらよろしくお願い申し上げます。
c++ のご質問であれば c のタグは外していただけますか。
失礼いたしました。修正しました。
Sublime Text 上の出力を見るに呼び出されているのは c++ ではなく g++ であるように見えますが、念の為そちらに対しても -v を渡してみては如何でしょうか?
ご指摘ありがとう御座います。質問の方に反映致しました。
Mac では gcc や g++ という名前でも Apple clang が呼び出されて、brew で入れた gcc や g++ は gcc-11 や g++-11 (11 は gcc のバージョン) みたいな名前になるという罠があります。ってか、Apple clang の場合、#include <bits/stdc++.h> の時点で非標準ヘッダーのためエラーになるような…。
また、Apple clang では相変わらず古い C++ がデフォルトのようで、#include <bits/stdc++.h> を #include <vector> に書き換えて c++ --std=c++11 でコンパイルしたら通りました。
ありがとう御座います。勉強になりました。
回答1件
あなたの回答
tips
プレビュー