Ben*_*Ben 2 c macros structure c-preprocessor
我对 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);
}
Run Code Online (Sandbox Code Playgroud)
我的 IDE 显示“在 'struct test' 中没有名为 'var_Index' 的成员”,但我在宏中的 Index 一词前面没有 # 。
合并令牌是用 ##
以下更改应该有效:
#define E(Structure, Index) Structure.var_##Index
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |