我从教育/黑客的角度来问这个问题,(我真的不想这样编码).
是否可以仅使用C预处理程序指令实现while循环.我知道宏不能递归扩展,那么如何实现呢?
是否可以编写一个返回其参数数量的C宏?
我想做的事情:
foo(1) -> 1
foo(cat, dog) -> 2
foo(red, green, blue) -> 3
Run Code Online (Sandbox Code Playgroud)
如果可以以这样的方式定义这个宏以便它与##一起工作,那就更好了
foo(1) -> bar1(1)
foo(cat, dog) -> bar2(cat, dog)
foo(red, green, blue) -> car3(red, green, blue)
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:我真的想要一个宏,而不是一个函数.使用功能的建议将被低估.
我的结构如下
typedef struct
{
int a;
int b;
int c;
} my_struct;
Run Code Online (Sandbox Code Playgroud)
在另一个文件中,我声明了这种my_struct类型的变量,如下所示.
my_struct strct_arr[MAX];
Run Code Online (Sandbox Code Playgroud)
MAX宏在哪里是可配置值,是18的倍数(18或36或54等等......它可能达到18*n次).
我必须用{0xff,0,0}初始化结构.那么,如何my_struct strct_arr[MAX];使用我的初始值初始化整个结构数组而不使用任何类型的循环.
我期待输出如下:
my_struct strct_arr[MAX]={
{0xff,0,0},
{0xff,0,0},
{0xff,0,0},
{0xff,0,0},
…
};
Run Code Online (Sandbox Code Playgroud)
但是,如果不知道MAX价值,如何初始化它?