我可以在函数范围内使用define吗?如:
void run() {
#define auto BOOST_AUTO
auto i = v.begin();
//...
}
该功能后定义是否仍然有效?我可以将它作为功能的本地吗? (请不要告诉我使用C ++ 11)
答案 0 :(得分:3)
宏的范围(在预处理器内)是从其定义点到相应的#undef
或翻译单元的末尾。预处理器对代码中的函数或其他结构一无所知。
答案 1 :(得分:1)
#define
不像函数那样保留自己的范围。它们被预处理器天真地取代。
#define
个关键字会导致未定义的行为。
这意味着由编译器做什么。我假设大多数编译器都会得到你的想法并用auto
替换所有出现的BOOST_AUTO
。
答案 2 :(得分:1)
我可以在函数范围内使用define吗?
是的,您可以在任何地方使用预处理程序指令。 cpp不知道任何c / c ++语法。在函数范围结束之前放置#undef
指令。
答案 3 :(得分:1)
是的,您可以使用,但您还需要一个#undef
指令,您可以在其中运行范围结束。
在您尝试定义关键字时,会导致未定义的行为。