【发布时间】:2013-03-27 17:25:45
【问题描述】:
在 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;}
【问题讨论】:
-
首先,将这种调试日志替换为合理且理智的东西会更好。
-
尝试创建编译错误
-
@H2CO3 我知道,但我没有启动它,我必须处理它。
-
@Alon 我试图想出一种方法来引发编译错误,但还没有找到任何方法。有什么想法吗?
-
您可以使用
if\s*\(.*\)\s*^{或类似形式的正则表达式,但正如其他人所说,您应该修复调试代码而不是其余代码
标签: c++