我可以在函数作用域中使用定义指令吗?
Can I use define directive in a function scope?
>我可以在函数作用域中使用定义吗?如:
void run() {
#define auto BOOST_AUTO
auto i = v.begin();
//...
}
定义在函数之后是否仍然有效?我可以将其设置为函数的本地吗?(请不要告诉我使用 C++11)
宏
的作用域(在预处理器内)是从其定义点到相应的#undef
或翻译单元的末尾。预处理器对代码中的函数或其他结构一无所知。
我可以在函数作用域中使用定义吗?
是的,您可以在任何地方使用预处理器指令。cpp 不知道任何 c/c++ 语法。在函数作用域结束之前放置一个 #undef
指令。
是的,您可以使用,但您还需要一个 #undef
指令,您可以在其中结束函数作用域。
在您的情况下,当您尝试定义关键字时,它会导致未定义的行为。
#define
不像函数那样保持自己的作用域。它们被预处理器天真地替换。
#define
关键字会导致未定义的行为。这意味着由编译器决定该怎么做。我假设大多数编译器会理解您的想法,并用BOOST_AUTO
替换所有出现的auto
。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 如何在编译时定义C++预处理器指令的值?
- 令人困惑的定义指令在C ++项目中
- 获取 llvm 指令的使用和定义
- 将多个Pragma指令放入一个预处理器定义中
- 我可以在函数作用域中使用定义指令吗?
- 将使用预处理器指令来定义美元符号表示的内容会导致任何冲突
- 当第一个字符串在预处理器指令中定义,第二个字符串在C++中常量时,如何连接 2 个字符串
- 如何在各种编译器中定义 __cplusplus 指令
- __cplusplus已定义和未定义的编译器指令
- C++ 定义指令失败,代码看起来正常
- 在 C 中定义指令不明确
- 使用带有自定义对齐分配器实现的最新g++,使用SSE和-O3选项编译时出现非法指令(核心转储)
- #定义具有多个替换项的指令
- 是否可以定义另一个预处理器指令
- 如何为Apache模块定义自定义配置指令
- 如何在标准C/C++代码上包含和翻译自定义指令/扩展以保持高性能
- 在代码中定义指令来分隔代码版本
- #定义指令内存存储