簡體   English   中英

#undef 的奇怪行為

[英]weird behavior of #undef

#include <iostream>

#define MY_CONST 10

#define MY_OTHER_CONST MY_CONST

#undef MY_CONST

int main() {

  enum my_enum : int {

    MY_CONST = 100
  };

  std::cout << MY_OTHER_CONST;

  return 0;

}

我希望10作為輸出,但這個程序輸出100 有人可以解釋這里發生了什么嗎?

https://godbolt.org/z/77EedG11x

#define MY_OTHER_CONST MY_CONST將宏MY_OTHER_CONST定義為具有MY_CONST的替換列表。 定義宏時不執行替換。

std::cout << MY_OTHER_CONST; , MY_OTHER_CONST被其替換列表替換,成為MY_CONST 此時,沒有MY_CONST的宏定義,因此不再進行替換。 然后MY_CONST引用enum常量MY_CONST ,其值為 100。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM