gpt4 book ai didi

c++ - 如何在宏中排除 lcov 分支

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:46 25 4
gpt4 key购买 nike

我的代码中有一些日志记录宏:

#define LOG_MSG (pri, msg, ... ) \
if (pri > PriorityLevel ) \
printf( msg, ##\__VA_ARGS__);

我知道我可以使用 LCOV_EXCL_START、LCOV_EXCL_STOP 或 LCOV_EXCL_LINE 来抑制分支。但这只有在我调用 LOG_MSG 的每个地方都添加它时才有效:


LOG_MSG(ERROR, "发生错误\n");//LCOV_EXCL_LINE

我想在宏中包含该注释,但如果我将它放在那里,LCOV 无法识别它。例如,这段代码仍然会产生分支。

#define LOG_MSG (pri, msg, ... ) \
if (pri > PriorityLevel ) \
printf( msg, ##\__VA_ARGS__);//LCOV_EXCL_LINE

有没有什么好的方法可以在宏本身中抑制这些分支?

最佳答案

为什么不把宏变成函数呢?

喜欢:

template <typename ... Ts>
void LOG_MSG(int priority, const std::string& message, Ts&&...ts)
{
if (priority > PriorityLevel)
printf(message.c_str(), std::forward<Ts>(ts)...);
// Or more appropriate stuff
}

关于c++ - 如何在宏中排除 lcov 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906596/

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