我还是C的新手,所以请忍受。
我正在尝试能够通过索引引用结构的元素。我认为宏可以解决问题,但显然不行。谁能解释以下原因为何无效?
#include <stdio.h>
#define E(Structure, Index) Structure.var_Index
typedef struct test{
int var_0;
}TEST;
int main(){
TEST Test;
E(Test, 0) = 0;
return(0);
}
我的IDE提示“在'struct test'中没有名为'var_Index'的成员,”但是在宏的Index单词前没有#。
答案 0 :(得分:6)
使用##
以下更改应该起作用:
#define E(Structure, Index) Structure.var_##Index
答案 1 :(得分:5)
var_Index
是一个令牌,编译器(预处理器)不会显示为Index
。
您可以使用##
运算符将其连接到宏中的令牌。
#include <stdio.h>
#define E(Structure, Index) Structure.var_##Index
typedef struct test{
int var_0;
}TEST;
int main(){
TEST Test;
E(Test, 0) = 0;
return(0);
}