視爲空白characetr在那裏被寫入爲什麼回車符不被預處理
- ...預處理標記的所述C標準的部分
6.4 Lexical elements
可以用空格隔開;這個由 評論(後述),或空白字符 (空間,水平製表,換行,垂直製表符,並形成進料),或者 兩者。
因爲看到回車符不包含在空白字符的概念中。
在標準C函數isspace
的描述另一方面,存在被寫入(7.4.1.10 The isspace function
)
- ...標準空白字符被以下:空間( ''),形式進料( '\ F'),新線( '\ n'),回車( '\ R'), 水平製表( '\ T'),和垂直製表( '\ v')。在「C」語言環境中, isspace僅對標準空格字符返回true。
是不是故意的回車符是不是在描述預處理部分提到,如果這樣的原因是什麼?
或者它只是標準的缺陷?
相同的問題對於C++標準是有效的。
否則,預處理器無法知道是哪裏的語句結束。這就是爲什麼\用於顯示它*在下一行繼續。 –
請注意,§5.1.1.2翻譯階段包含步驟_1。物理源文件的多字節字符被映射,在一個實現定義 方式,到源字符集( 結束線指標引入新行字符)如果necessary._如果源文件具有CRLF行結束,此如果CRLF行末尾被源環境識別,則可以將這些行映射到換行符(LF)字符。因此,在Windows上,該映射是適當的。它在Unix上並不嚴格適用,但可以由一個慷慨的編譯器支持,可能在用戶從命令行選項的指導下進行。 –
@WeatherVane預處理階段沒有聲明。如果你正在談論預處理指令,它們由換行符終止,沒有回車 –