gpt4 book ai didi

c - 宏参数与结构域混合

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:52 26 4
gpt4 key购买 nike

所以我有这样的宏:

#define some_macro(param1)    \
static some_struct_t struct = \
{ \
.param1 = param1 \
}

当我使用直接值从 main 调用这个宏时:

some_macro(50);

我得到一个错误:

..\..\main.c(185): error:  #29: expected an expression

我找到了 2 种方法来解决它,第一种是在 main 中声明 const 值并传递给宏,第二种是更改参数名称,使其与宏中的名称不同。

所以它有效,但我不知道是什么导致了错误。有什么想法吗?

最佳答案

struct 是保留字,不能作为变量名使用

改为:

#define some_macro(p1)                \
static some_struct_t valid_var_name = \
{ \
.param1 = p1 \
}

如果你想使用相同的成员名称(param1)作为宏参数的名称你需要停止扩展(使用##)或者你得到 .50 = 50

#define some_macro(param1)     \
static some_struct_t varname = \
{ \
.param##1 = param1 \
}

关于c - 宏参数与结构域混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37024555/

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