Gok*_*kul 2 c++ switch-statement c-preprocessor
我想替换一个
#define INTERVAL_MASK(b) (1 << (b))
Run Code Online (Sandbox Code Playgroud)
具有内联函数.
int INTERVAL_MASK(int b)
{
return (1 << b);
}
Run Code Online (Sandbox Code Playgroud)
但我有一个switch case,它在case语句中使用预处理器指令.怎么去转换呢?更换switch搭配if是唯一的选择吗?
switch case标签必须有一个整数常量表达式,因此你不能在case标签中进行函数调用.
使用宏没有任何问题.
如果你真的担心使用宏,#define它就在switch语句之前,#undef它紧跟在switch语句之后.
在C++ 0x中,您将能够创建constexpr可用于常量表达式的函数,但据我所知,编译器实际上还没有完全支持C++ 0x的那部分.
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |