为什么这个宏不像我想象的那样工作?

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);
}