我可以在函数范围中使用define指令吗?

时间:2014-02-27 07:56:50

标签: c++

我可以在函数范围内使用define吗?如:

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

该功能后定义是否仍然有效?我可以将它作为功能的本地吗? (请不要告诉我使用C ++ 11)

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

#define不像函数那样保留自己的范围。它们被预处理器天真地取代。

#define个关键字会导致未定义的行为。 这意味着由编译器做什么。我假设大多数编译器都会得到你的想法并用auto替换所有出现的BOOST_AUTO

答案 2 :(得分:1)

  

我可以在函数范围内使用define吗?

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

答案 3 :(得分:1)

是的,您可以使用,但您还需要一个#undef指令,您可以在其中运行范围结束。

在您尝试定义关键字时,会导致未定义的行为