所以我有这样的宏:
#define some_macro(param1) \
static some_struct_t struct = \
{ \
.param1 = param1 \
}
Run Code Online (Sandbox Code Playgroud)
当我从main调用此宏时具有直接值:
some_macro(50);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
..\..\main.c(185): error: #29: expected an expression
Run Code Online (Sandbox Code Playgroud)
我找到了两种方法来解决它,第一种是在main中声明const值并传递给宏,第二种是更改参数的名称与宏中的相同.
所以它有效,但我没有造成错误.有任何想法吗?
struct 是保留字,不能将其用作变量名
改为:
#define some_macro(p1) \
static some_struct_t valid_var_name = \
{ \
.param1 = p1 \
}
Run Code Online (Sandbox Code Playgroud)
如果你想使用member(param1)的相同名称作为宏参数的名称,你需要停止扩展(使用##)或者你得到.50 = 50
#define some_macro(param1) \
static some_struct_t varname = \
{ \
.param##1 = param1 \
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |