在C中将宏与变量一起使用

时间:2018-12-31 16:56:35

标签: c macros

我有一个平面c文件,其中包括ctype.h,在其中我无法弄清楚宏的工作方式。有这个宏

#define da_dim(name, type)  type *name = NULL;          \
                            int _qy_ ## name ## _p = 0;  \
                            int _qy_ ## name ## _max = 0

我认为它应该定义给定值的类型。例如,我可以写

int a;
da_dim(a,"char");

可以将其转换为char,但是不会那样做。我可以想象'##名称##'是/确实是什么(就像占位符一样),但是我不明白' qy '是什么以及它来自何处。那么,这个宏的作用是什么,tu如何使用它,以及(也许)它是如何工作的?

1 个答案:

答案 0 :(得分:4)

Integrated Security中的宏仅仅是一种简单的令牌替换机制。

您的示例:

foo = 'bar';

debug('foo'); 

function debug(Variable) { 
 var Value = this[Variable]; // in that occurrence, it is equivalent to
 // this['foo'] which is the syntax to call the global variable foo
 console.log(Variable + " is " + Value);  // print "foo is bar"
}

将扩展为:

C

因此,如果会扩展为错误,因为您将有两个int a; da_dim(a,"char"); 标识符,并且int a; "char" *a = NULL; int _qy_a_p = 0; int _qy_a_max = 0; 不应放在您的位置。

如果您使用的是a,则可以执行以下操作来“查看”宏扩展:

"char"