关于网友提出的“ 宏参数中有括号,编译出错”问题疑问,本网通过在网上对“ 宏参数中有括号,编译出错”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 宏参数中有括号,编译出错
描述: 我有一个模板类,可以继承这个模板类实现好多类,子类它们差不多都有相同的代码实现部分,我想写个宏
想把类似这样的代码
int MyType::array[] = {1,2,3};
改成用宏
#define DEFINE_MEMBER (TYPENAME, VALUE) \
int TYPENAME::array[] = VALUE;
DEFINE_MEMBER (MyType, {1,2,3})
宏里有{1,2,3};会报错,因为它认逗号,第二个参数直接把"{1"输进去了,怎么办呢?
解决方案1: 这样肯定编译不过!看这样能不能满足你要求
int g_DefData[]={1,2,3};
#define DEFINE_MEMBER(TYPENAME, VALUE) int *TYPENAME = VALUE;
DEFINE_MEMBER( A, g_DefData);
DEFINE_MEMBER( B, g_DefData);
DEFINE_MEMBER( C, g_DefData);
解决方案2: 首先,你要知道{1,2,3}在C++中英文叫法是什么?
其次,你要会用英文搜索引擎,然后,你就能找到答案
以上介绍了“ 宏参数中有括号,编译出错”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3637164.html