相关疑难解决方法(0)

我们可以有递归宏吗?

我想知道我们是否可以在C/C++中使用递归宏?如果是,请提供示例.

第二件事:为什么我无法执行以下代码?我在做什么错?是因为递归宏吗?

# define pr(n) ((n==1)? 1 : pr(n-1))
void main ()
{
    int a=5;
    cout<<"result: "<< pr(5) <<endl;
    getch();
}
Run Code Online (Sandbox Code Playgroud)

c c++ macros c-preprocessor

50
推荐指数
4
解决办法
4万
查看次数

初始化结构数组

这是我刚刚在其他人的问题中找到的初始化.

my_data data[]={
    { .name = "Peter" },
    { .name = "James" },
    { .name = "John" },
    { .name = "Mike" }
};
Run Code Online (Sandbox Code Playgroud)

我之前从未见过这样的东西,也找不到解释.name可能是正确的.
我正在寻找的是这个过程如何逐步进行.

它看起来像是:

1) data;
2) *data;
3) (*data).name;
4) (*data).name="Peter";
Run Code Online (Sandbox Code Playgroud)

或者我完全错了?

c arrays struct initialization

23
推荐指数
3
解决办法
13万
查看次数

C预处理器宏用于返回重复一定次数的字符串

有人知道任何C99预处理器魔法允许创建一个由另一个重复N次的字符串组成的字符串吗?

例如

STRREP( "%s ", 3 )
Run Code Online (Sandbox Code Playgroud)

"%s %s %s "
Run Code Online (Sandbox Code Playgroud)

经过预处理.

我能想到的唯一一件事就是这样

#define STRREP( str, N ) STRREP_##N( str )    
#define STRREP_0(str) ""
#define STRREP_1(str) str
#define STRREP_2(str) str str
#define STRREP_3(str) str str str
...
Run Code Online (Sandbox Code Playgroud)

哪个效果很好,但是很难看,因为我必须手动为每个重复长度定义一个宏.我想与variadic宏一起使用它,宏返回这里显示的宏参数的数量.

c macros c-preprocessor

13
推荐指数
3
解决办法
7679
查看次数

标签 统计

c ×3

c-preprocessor ×2

macros ×2

arrays ×1

c++ ×1

initialization ×1

struct ×1