【发布时间】:2020-01-14 04:33:14
【问题描述】:
我有一个if-else if 应该检查一个标志以及是否定义了一个宏。我提出了两种解决方案,但不确定使用哪一种。
- 是否会在执行时间上有所不同(或者编译器优化会消除这一点)?
- 如果未定义标志(即由于在示例代码上方或下方编写的行),第一个解决方案是否会导致
else出现错误?
另外:
- 是否有任何普遍遵循的最佳实践可以适用于这种情况?
1
#ifdef FLAG_A
if(flagB)
{
...
}
else
#endif
{
...
}
2
#ifdef FLAG_A
bool flagA = true;
#else
bool flagA = false;
#endif
if(flagA && flagB)
{
...
}
else
{
...
}
【问题讨论】:
-
1 的一个问题是,如果您需要
else if()和/或额外的#ifdef FLAG_B,会发生什么?
标签: c++ if-statement c-preprocessor code-readability