用于在C中创建变量的宏

nac*_*o4d 3 c macros

我想创建几个形式的变量:

static char fooObjectKey;
static char bazObjectKey;
static char wthObjectKey;
static char myObjectObjectKey;
...
Run Code Online (Sandbox Code Playgroud)

所以我写了

#define defineVar(x) static char #x ObjectKey

defineVar(foo);
defineVar(baz);
defineVar(wth);
defineVar(myObject);
Run Code Online (Sandbox Code Playgroud)

但我得到错误: Expected identifier or }

我在这做错了什么?:)任何帮助表示赞赏

MBy*_*ByD 8

你需要连接它们:

#define defineVar(x) static char x##ObjectKey
Run Code Online (Sandbox Code Playgroud)

说明:

预处理程序运算符##提供了一种在宏扩展期间连接实际参数的方法.如果替换文本中的参数与##相邻,则参数将替换为实际参数,##和周围的空白区域将被删除,并重新扫描结果.例如,宏粘贴连接其两个参数:

#define paste(front, back) front ## back

所以paste(name, 1)创建令牌name1.