gpt4 book ai didi

c++ - 如何检查/检测没有花括号的 'if' 子句?

转载 作者:搜寻专家 更新时间:2023-10-31 01:10:35 26 4
gpt4 key购买 nike

在 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,所以它不能拾取任何额外的 else

关于c++ - 如何检查/检测没有花括号的 'if' 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com