相关疑难解决方法(0)

如何使用C预处理器编写while循环?

我从教育/黑客的角度来问这个问题,(我真的不想这样编码).

是否可以仅使用C预处理程序指令实现while循环.我知道宏不能递归扩展,那么如何实现呢?

c while-loop c-preprocessor

66
推荐指数
7
解决办法
5万
查看次数

宏返回它在C中给出的参数数量?

是否可以编写一个返回其参数数量的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)

谢谢!

编辑:我真的想要一个宏,而不是一个函数.使用功能的建议将被低估.

c c-preprocessor

22
推荐指数
3
解决办法
1万
查看次数

是否有C宏来生成重复字符串?

假设我要产生------,只用-,是有一个C宏来产生重复的字符串?

c c++ macros

5
推荐指数
3
解决办法
4249
查看次数

如何初始化具有可变索引的结构数组

我的结构如下

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价值,如何初始化它?

c arrays struct

5
推荐指数
1
解决办法
202
查看次数

标签 统计

c ×4

c-preprocessor ×2

arrays ×1

c++ ×1

macros ×1

struct ×1

while-loop ×1