gpt4 book ai didi

c++ - 如何在宏中使用宏后面的代码块?

转载 作者:行者123 更新时间:2023-12-02 10:29:39 25 4
gpt4 key购买 nike

我想用它的宏来实现像 Boost 库一样的东西(例如,就像 BOOST_FOREACH )。
这是我目前使用的宏示例:

#define LOCK_GUARD(var, block) { std::lock_guard<std::mutex> ___scope__(var); block }


std::mutex mutex;

LOCK_GUARD(mutex, {
// body...
});
我想知道如何以这种方式修改它,所以我可以使用 LOCK_GUARD如下所示:
LOCK_GUARD(mutex)
{
// body...
}

最佳答案

if 中定义变量健康)状况。那么你的代码块可以是 if body 。

#define LOCK_GUARD(var) \
if (::std::lock_guard<std::mutex> _lock_guard_(var); false) {} else
备注 false) {} else而不是 true) - 它可以防止 else s 在用户代码中从附加到宏。
请注意,使用循环(仅执行一次)代替 if会有问题,因为 breakcontinue将能够与之交互,这是不好的。

关于c++ - 如何在宏中使用宏后面的代码块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62841530/

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