小编vin*_*l99的帖子

类函数宏的错误扩展

晚上好,
我的宏有问题。我应该想出一个宏ENTRY,它将一个值放入一个数组中(scanf("%d",&ENTRY(x,i))已给出)。

我试过:#define ENTRY (a,b) (a[b-1]),但这没有用。
它创建了一个编译器错误,指出 a 和 b 未声明。
但我认为我不必声明宏中使用的变量,尤其是因为,例如:#define min (a,b) ((a)<(b)?(a):(b))在另一个程序中工作。

那么我在这里做错了什么?

#include <stdio.h>
#define N 3
#define ENTRY (a,b) (a[b-1])

int main(void)
{

    int x[N],i;
    float y[N];

    for(i=1;i<=N;i++){ printf("x_%d = ",i);scanf("%d",&ENTRY(x,i));}
    for(i=1;i<=N;i++){ printf("y_%d = ",i);scanf("%lf",&ENTRY(y,i));}

    return 0
}
Run Code Online (Sandbox Code Playgroud)

c macros declaration

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

标签 统计

c ×1

declaration ×1

macros ×1