2017-03-27 22 views
0

C++では、include文の最後にセミコロンを追加するかどうかはわかりません。例えば
、このように、あなたがiostreamライブラリが含まれている必要がありstd::coutメソッドを使用するために:私は<iostream>ライブラリが含まれた後、私はこのように、文の終わりにセミコロンを追加する必要がありますincludeステートメントの最後にセミコロンを追加する必要がありますか?

#include <iostream> 

#include <iostream>; 

またはそのままにしますか?

+5

includeステートメントの後にセミコロンを追加する理由はありません。合法だが無意味なセミコロンを置くことができる場所はたくさんあります。 –

+5

related/dupe:http://stackoverflow.com/questions/10011318/why-include-directive-doesnt-have-a-semi-colon-at-the-end-of-statement – NathanOliver

答えて

4

いいえ、すべきではありません。


なぜ?

#xxxxxxは、プリプロセッサーディレクティブです。前者は、コンパイルプロセスの別のステップの一部です。プリプロセッサはコードの実際のコンパイルが始まる前にコードを解析します。すべてのディレクティブは、通常のC++ステートメントで実際のコードが生成される前に解決されます。

概要:

  • ほとんどのC/C++の文はセミコロン;で終了する必要があります。それはC/C++ standardの一部です。
  • プリプロセッサディレクティブは、;または他のシンボルで終了する必要はありません。
+0

Ok。合意した@FrançoisAndrieuxの頭に感謝します。オプションで ";"で終わることのできるステートメントもいくつかあります。たとえば、中かっこなどです。 – 0xDEFACED

+0

空でないステートメントは合法です。愚かですが法的です。空の文を提供しているのではなく、「オプションのセミコロン」でブロックを終わらせるというわけではありません。 –

1

インクルードファイルの内容が構文的に正しい場合、セミコロンはまったく効果がありません。だから、なぜそれを追加する必要がありますか?このような冗長コードは通常、混乱の原因となり、保守性が悪くなります。

場合によっては、インクルードファイルの最後のステートメントの後にセミコロンがない場合、このエラーはセミコロンを追加することによって「固定」されます。しかし、このようなエラーはインクルードファイル自体で修正する必要があるため、これは決して良いことではありません。さもなければそれはさらに混乱につながるでしょう。

関連する問題