问题遇到的现象和发生背景
定义了宏想实现拼接出变量规律的变量名称
问题相关代码,请勿粘贴截图
#define __COVER(oName,tName) oName##pName
int a = 3;
__COVER(Test,a)
运行结果及报错内容
Testa 未把 3 传递进来
我的解答思路和尝试过的方法
我想要达到的结果
Test3
定义了宏想实现拼接出变量规律的变量名称
#define __COVER(oName,tName) oName##pName
int a = 3;
__COVER(Test,a)
Testa 未把 3 传递进来
Test3
宏定义就是简单的字符替换。宏定义里,第二个参数是tName,后面写的是pName,肯定没法替换啊。
是不是应该把pName改成tName。
替换后,必须要有Test3这个变量,否则会报错。参考代码如下:
#include <stdio.h>
#define __COVER(oName,tName) oName##tName
int main(){
char* Test3="abc"; //需要有Test3这个变量,不管这个变量是什么类型
//int Test3 = 2;
int a=3;
__COVER(Test,3);
return 0;
}