variadic-macros

variadic-macros

文章 0 浏览 6

在宏中访问__va_args__的内容(不是函数)

一个人可以使用 ... 的内容使用 stdarg.h : void fn(int nargs, ...){ va_list args; va_start(args,nargs); i64 arg0 = va_arg(args,i64); va_end(a…

稚然 2025-02-05 00:34:07 2 0

可以在宏内使用`#ifdef`吗?

我只找到这个相关的问题,这并不是我想要的。 我曾经在 #ifdef 语句中定义了宏: #ifdef DEBUG # define PRINT_IF_DEBUGGING(format) printf(format);…

避讳 2025-01-30 02:44:56 6 0

c中的变异宏

在 variadic macros上的gnu文档示例是 #define debug(format,...)fprintf(stderr,格式,__va_args__) ... 在标准C中,不允许您完全排除变量参数…

走过海棠暮 2025-01-29 05:21:40 3 0

在嵌套的宏中使用__va_args__,但是ARGS被截断

我正在做类似下面的事情: #define AA(mac, a, ...) mac(a, __VA_ARGS__) #define MAC1(a, b, c) a##b##c AA(MAC1, 0, 1, 2) 我真正想要的是将“ AA(…

浮光之海 2025-01-21 16:39:45 3 0

C11 variadic宏:将元素放入方括号中

我正在看一个宏,或更可能是宏的组合,这将达到以下效果: BRACKET(a) => { a } BRACKET(a, b) => { a }, { b } BRACKET(a, b, c) => { a }, { b }, {…

二手情话 2025-01-21 11:30:59 3 0

可变参数宏的 2 种不同语法

#define TEST(X, ...) X ## __VA_ARGS__ // (1) #define TEST(X, args...) X ## args // (2) 它们之间有什么功能差异吗? (即在某些情况下,其中之一…

如果没有 2025-01-02 22:38:20 4 0

在多级宏调用中字符串化宏参数

我有一个像这样的宏: #define SHOW_EXPR(x) printf ("%s=%d\n", #x, (x)) 它有效: #define FOO 123 int BAR = 456; SHOW_EXPR(FOO+BAR); 这将按预期…

长亭外,古道边 2024-12-20 12:36:26 6 0

将可变参数宏转换为可变参数模板函数?

给定以下形式的可变参数宏: #define MY_CALL_RETURN_F(FType, FId, ...) \ if(/*prelude omitted*/) { \ FType f = (FType)GetFuncFomId(FId); \ if(…

断爱 2024-12-01 08:50:18 11 0

是否可以在 Visual C++ 中防止删除带有空 __VA_ARGS__ 的逗号?

在 Visual Studio 2005 上,我有一个如下所示的宏(示例!!): #define MY_CALL(FUN, ...) \ if(prepare(x, y)) { \ FUN(__VA_ARGS__); \ } /**/ 只…

々眼睛长脚气 2024-11-30 07:47:23 9 0

计算参数总大小的 C 函数

我目前正在计算传递给函数的参数的总大小(以字节为单位)。理论上,我们可以为每个参数写出sizeof(x)。然而,如果想要对很多函数执行此操作,这将是…

漫雪独思 2024-11-11 23:03:37 14 0

带有“占位符”的宏价值

我正在使用一个包含一组预处理器库的库。其中之一是 FOR_EACH 样式宏,它迭代 __VA_ARGS__ 并为每个参数调用用户提供的宏。用户提供的宏的调用方式如…

夜访吸血鬼 2024-11-09 01:47:42 7 0

C++ Boost.Fusion 中的可变参数宏?

因此,根据这个答案,C++不支持可变参数宏,并且 C++ 标准没有在任何地方提到可变参数宏。我知道 C99 使用 __VA_ARGS__ 引入了可变参数宏,并且某些 C…

帅哥哥的热头脑 2024-11-08 20:38:30 11 0

具有零参数的可变参数宏

我正在开发一个调用宏, #define CALL(f,...) FN(f)->call((ref(new LinkedList()), __VA_ARGS__)) 当调用它时,它 CALL(print,2,3,4,5); 会将 2 3 4 …

挖鼻大婶 2024-11-05 14:08:49 10 0

可变参数宏技巧

创建可变参数宏 FOO(a1, a2, a3,..., an) 使其扩展为 FOOn(a1, a2, a3,..., an) 的技巧是什么) 对于 n 的值在您选择的任何预选有界范围内?也就是说,…

把时间冻结 2024-10-24 09:38:42 12 0

使用宏迭代生成函数声明

我正在尝试使用宏生成函数声明 /* goal: generate int f(int a, float b) */ template struct ptype; template struct ptype { typedef P type; }; #d…

预谋 2024-10-23 19:03:45 10 0
更多

推荐作者

眼泪淡了忧伤

文章 0 评论 0

corot39

文章 0 评论 0

守护在此方

文章 0 评论 0

github_3h15MP3i7

文章 0 评论 0

相思故

文章 0 评论 0

滥情空心

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文