gpt4 book ai didi

通过宏初始化 C 数组

转载 作者:太空狗 更新时间:2023-10-29 15:53:44 29 4
gpt4 key购买 nike

问题背景:
void dash(int *n, char c)是绘制字符c,用'+'隔开。
参数 n 是一个整数数组,例如c 的 {1, 3, 2} 和​​ '-' 应该给出“+-+---+--+”,效果很好。要使用破折号,我会执行 {int f={1, 3, 2}; dash(f, '-');,这使得构造可复制和粘贴。

问题本身:
为了避免复制和粘贴,我想做 #define F(X, Y) {int f=X;破折号(f,Y);,生成一个很好用的 F({1, 3, 2}, '-')
不幸的是,编译器提示 F 得到 4(数组的长度 + 1)个参数而不是 2 个。

那么如何将 {1, 3, 2} 作为参数传递给宏呢?

最佳答案

可变参数宏是 C99 的一个特性。

#define F(Y,...) dash((int[]){__VA_ARGS__},Y)

So how can you give {1, 3, 2} as parameter to a macro?

F('-',1,3,2);

关于通过宏初始化 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643226/

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