我可以在函数作用域中使用定义指令吗?

Can I use define directive in a function scope?

本文关键字:定义 指令 函数 作用域 我可以      更新时间:2023-10-16

>我可以在函数作用域中使用定义吗?如:

void run() {
  #define auto BOOST_AUTO
  auto i = v.begin();
  //...
}

定义在函数之后是否仍然有效?我可以将其设置为函数的本地吗?(请不要告诉我使用 C++11)

的作用域(在预处理器内)是从其定义点到相应的#undef或翻译单元的末尾。预处理器对代码中的函数或其他结构一无所知。

我可以在函数作用域中使用定义吗?

是的,您可以在任何地方使用预处理器指令。cpp 不知道任何 c/c++ 语法。在函数作用域结束之前放置一个 #undef 指令。

是的,您可以使用,但您还需要一个 #undef 指令,您可以在其中结束函数作用域。

在您的情况下,当您尝试定义关键字时,它会导致未定义的行为

#define不像

函数那样保持自己的作用域。它们被预处理器天真地替换。

#define关键字会导致未定义的行为。这意味着由编译器决定该怎么做。我假设大多数编译器会理解您的想法,并用BOOST_AUTO替换所有出现的auto