-ansi と -std=c++11 が一緒に動作しないのはなぜですか? (ANSI は、他の回答に従って C++98 に戻ります) g++-4.8 を使用しています。
C++11 の ANSI 承認は次のとおりです。
http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2fISO%2fIEC+14882-2012
これは私を困惑させます。ありがとう!
-ansi と -std=c++11 が一緒に動作しないのはなぜですか? (ANSI は、他の回答に従って C++98 に戻ります) g++-4.8 を使用しています。
C++11 の ANSI 承認は次のとおりです。
http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2fISO%2fIEC+14882-2012
これは私を困惑させます。ありがとう!
RTFM :
-ansi
C モードでは、これは と同等-std=c89
です。C++ モードでは、 と同等-std=c++98
です。
このフラグは、複数のバージョンの標準が存在する前に追加されたものであり、フラグの意味は今でも同じです。
とにかく両方を使いたいのはなぜですか?それを使用したい場合は-std=c++11
、矛盾する何かを意味する別のフラグを追加しないでください。
それらは単なるフラグ名です。1. ANSI は非常に多くのことを標準化しているため、2. 古い標準は定期的に更新されて意味のある変更が加えられているため、単に「ANSI」と呼ぶのは避けた方がよいでしょう。3. 私が知っているどのコンピューター言語にも特に関与していません。むしろ、C++、ISO の場合、何らかの国際組織のメンバーとして参加します。
必要な標準化された言語の方言をコンパイラに伝えるときは、その標準化の年を指定するか、最初の (最も古い) 標準が必要であるという唯一の前提を指定します。最初の標準化は、年を指定しなくても曖昧にならない唯一の時点です。
ドキュメントによると、あいまいさといえば、-ansi
GCC の呼び出しに依存する意味を持つ唯一の言語フラグです。gcc -ansi
は C89 をg++ -ansi
意味し、C++03 を意味します。個人的には、賢さよりもあいまいさが少ない方が好きです。