一句話tips之define中的續行符

http://blog.sina.com.cn/s/blog_793f98560101143h.html
一般常見的,反斜槓符號在C++中是當做轉義符號。


但是當#DEFINE遇到反斜槓符號這玩意兒有個正式的名稱叫做續行符。


在普通代碼行後面加不加都一樣(VC是自動判斷續行的)。


但是在宏定義裏面就特別有用,因爲宏定義規定必須用一行完成:


#define SomeFun(x, a, b) if(x)x=a+b;else x=a-b;


這一行定義是沒有問題的,但是這樣代碼很不容易被理解,以後維護起來麻煩,如果寫成:


#define SomeFun(x, a, b)
if (x)
x = a + b;
else
x = a - b;

這樣理解是好理解了,但是編譯器會出錯。


因爲它會認爲#define SomeFun(x, a, b)是完整的一行,if (x)以及後面的語句與#define SomeFun(x, a, b)沒有關係。


這時候我們就必須使用這樣的寫法:

#define SomeFun(x, a, b)\
if (x)\
x = a + b;\
else\
x = a - b;

注意:最後一行不要加續行符.VC的預處理器在編譯之前會自動將\與換行回車去掉,這樣一來既不影響閱讀,又不影響邏輯,皆大歡喜.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章