在 C/C++ 代码项目中,我想找到所有不使用大括号的 if/else 句子。是否有任何编译器检查或实用程序可以找到它们?
主要问题是我想重新定义一些调试宏以避免在某些情况下进行跟踪评估(有人知道其他解决方案吗?)。我需要找到它们以避免 “dangling-else problem” ,如 "if" block without curly braces makes subsequent "else if" nested 中指出的
代码片段:
修改前:
DEBUG GET_DEBUG_DST(DEBUG_LEVEL_DEBUG).nospace() << DEBUG_PREFIX << __PRETTY_FUNCTION__
现在我们将使用内部不带大括号的if
:
DEBUG if (getDebugmode(DEBUG_LEVEL_DEBUG)) GET_DEBUG_DST(DEBUG_LEVEL_DEBUG).nospace() << DEBUG_PREFIX << __PRETTY_FUNCTION__
有问题的代码示例:
if (my condition)
DEBUG << "hi there";
else
{some more code;}
最佳答案
只需反转逻辑,将事件部分放在 else 中 分支:
#define DEBUG if( !getDebugmode( DEBUG_LEVEL_DEBUG ) ) \
; \
else \
GET_DEBUG_DST( DEBUG_LEVEL_DEBUG ).nospace() \
<< DEBUG_PREFIX << __PRETTY_FUNCTION__
由于 if
有一个匹配的 else
,因此无法拾取
任何其他其他
。
关于c++ - 如何检查/检测不带花括号的 'if' 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831517/