2017-10-16 198 views
2

我得到一個警告GCC多行註釋警告

警告:多行註釋[-Wcomment]

由於評論,我有,看起來像

// strings can start with a \ and also end with a \ 

我明白這個錯誤,並看到了關於這個主題的其他SO消息。

我可以很容易地修復警告(通過雙引號\ s)。

我很好奇是什麼,我就小心翼翼地確保該線末端用\。該行以\然後以空格結束。這是預處理器剝離我的尾部空間,從而引入警告?

+0

您可以在評論末尾添加'...',或者使用'\''而不是\僅在\中 –

+0

只需在最後添加一個字符\ – Indent

+0

@Indent修復問題很簡單,但我想了解發生了什麼。 –

回答

3

initial processing期間,預處理器對其輸入執行一系列文本轉換。

下面是從文檔報價(相關部分是黑體):

續行合併爲一個長行。

續行是以反斜槓結尾的行。反斜槓被刪除,下一行與當前行結合。

...

上的續行的斜槓通常被稱爲反斜槓換行符。

如果反斜槓和行尾之間有空白,那仍然是續行。但是,由於這通常是編輯錯誤的結果,並且許多編譯器不會接受它作爲續行,所以GCC會警告您。

在這種情況下,它最好使用'\'代替\如反斜槓用作符號而不是作爲連續線指示器。另一個(主觀上較差)選項是在\(例如一個點)之後放置一個結束非空白字符。

+0

感謝您的鏈接和詳細信息。對於信息clang和icc做同樣的但沒有來自MSVC的警告。 –