我有一个平面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如何使用它,以及(也许)它是如何工作的?
答案 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"