我讀到這裏的#define宏被犯了這樣的一篇文章#define語句:嵌入式如果宏觀
#define TEST(level) if (level > 2) ; else std::cout
,然後可以在代碼中使用這樣的:
Test(1) << 3;
Test(3) << 4;
我的印象是,如果你寫
TEST(1)
,將其替換爲下:
std::cout
和
TEST(3)
將與空字符串(在代碼文件中)來代替。但是,如果它以這種方式工作,那麼它應該拋出一個錯誤,因爲
<< 3;
無效。
這個宏如何實際工作?以及如何預處理器變化
TEST(3) << 3;
,使其無法正常輸出(即,代碼不運行)
預處理是文本替換。整個if-else被替換。 – chris