为什么这个宏不像我想象的那样工作?
Why does this macro not work like I think it would?
我对 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' 的成员”,但我在宏中的索引一词前面没有 #。
合并令牌已通过 ##
完成
以下更改应该有效:
#define E(Structure, Index) Structure.var_##Index
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);
}
我对 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' 的成员”,但我在宏中的索引一词前面没有 #。
合并令牌已通过 ##
以下更改应该有效:
#define E(Structure, Index) Structure.var_##Index
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);
}