c++ 中的續行符

有時候我們看代碼會遇到類似下面的代碼:

	#define NSD_REPORT_ERROR(eSeverity, ePackage, lFunctionality, hr, msg, bAssert) \
	{ \
		if (FAILED(hr)) { \
			LOG_MODULE_NOTIFY(0, 0, "%s hr=%x.", msg, hr); \
			if (bAssert) ASSERT(FALSE); \
		} \
	}

 

        那麼,每句後面的斜槓是什麼作用? 下面的解釋來自互聯網。

參考百度知道
斜槓有個正式的名稱叫做續行符,在普通代碼行後面加不加都一樣(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的預處理器在編譯之前會自動將\與換行回車去掉,這樣一來既不影響閱讀,又不影響邏輯,皆大歡喜. 


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