C中的嵌套宏

Ang*_*gus 1 c

#include<stdio.h>
#define A(int x) printf("%d\n",x)
#define AS(A) A(20)
typedef struct{
 int *m;
 int n;
 int k;
}st;
//static st sb[10] = {AS(A)}
int main()
{
    AS(A);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到如下错误.

Line 14: error: macro parameters must be comma-separated
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Kir*_*rov 7

这与嵌套宏无关.问题是

#define A(int x) printf("%d\n",x)
Run Code Online (Sandbox Code Playgroud)

你必须删除该int部分.像这样:

#define A(x) printf("%d\n",x)
Run Code Online (Sandbox Code Playgroud)

如果您离开int,预处理器会将其解释为另一个参数,这就是它告诉您的原因

Line 14: error: macro parameters must be comma-separated
Run Code Online (Sandbox Code Playgroud)

因为期望:

#define A(int,x) printf("%d\n",x)
Run Code Online (Sandbox Code Playgroud)