2016-07-08 3 views
2

私は表記に出くわした:だからC/C++プリプロセッサ#include構文。空白は必須ですか?他人からいくつかのコードでは

#include "file.h" 

#include"file.h" 

そして、私は疑問に思い、私はいつものようなディレクティブとパス/ファイルの間のスペースと構文が含ま書きます私は#includeの構文を検索しましたが、それほど大きな答えは見つかりませんでした。どのように使用されているかだけを示していますが、正確な構文は見つかりませんでした。

リソースを使用:https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html#Include-Syntax

も構文はどうあるべきかについて書かれた仕様はありますか?あるいは、最初のもの(空白なし)は無効な構文ですが、コンパイラの前拡張によって受け入れられますか?

(またMSVCで動作します)

答えて

3

1本は読み、それは少し難しくなりますと主張しているかもしれないがinclude後がない空白文字で、#include<header>#include"header"を持つことが許されます。さらに

 
#includepp-tokensnew-line 

pp-tokens: preprocessing-token 

preprocessing-token: header-name 

header-name: <h-char-sequence> 
      "q-char-sequence" 

(上記にスペースが文法構文の一部のみであり、太字のテキストはリテラルである)

#includeため

文法は、関連ビットを示すのみに削減されます。

前処理は、空白によって分離することができるトークン。これは、 コメント(後述)またはの空白文字(スペース、 水平タブ、改行、垂直タブ、およびフォームフィード)、またはその両方で構成されます。

これはC99 draft standard document(私の強調「can」)からのものです。

私はC++プログラマーではありませんが、この時点ではC++が同じ文法規則に従っていると思います。

関連する問題