gpt4 book ai didi

c++ - 从 C++ 宏中删除额外的括号

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:19 24 4
gpt4 key购买 nike

我有一堆源代码,它们使用双括号来调用一堆宏,其中第二个参数和前向参数是打印语句的可变参数。

   DEBUG((1,"here is a debug"))
DEBUG((1,"here is %d and %d",42,43))

等..

我想编写一个可以打印 args 2-... 的宏,但我不知道如何删除额外的括号以便我可以访问 args。

也就是说,这显然行不通:

#define DEBUG(ignore,...) fprintf(stderr,__VA_ARGS__)

下面的偷偷摸摸的尝试也失败了(“DEBUG2 not defined”):

#define DEBUG2(ignore,...) fprintf(stderr,__VA_ARGS__)
#define DEBUG(...) DEBUG2

在不编辑所有宏调用以移除括号的情况下,我如何定义一个宏来执行此操作?

最佳答案

你可以这样做:

#define PRINTF(unused, ...) fprintf(stderr, __VA_ARGS__)
#define DEBUG(arg) PRINTF arg

关于c++ - 从 C++ 宏中删除额外的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809796/

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