首页 > 试题广场 >

定义宏#define DECLARE(name, ty...

[单选题]
定义宏
#define DECLARE(name, type) type name##_##type##_type
则DECLARE(val, int)替换结果为()
  • int val_int_type
  • int val_int_int
  • int name_int_int
  • int name_int_name

##是一种分隔连接方式,它的作用是先分隔,然后进行强制连接
“name”和第一个“_”之间被分隔了,所以预处理器会把name##_##type##_type解释成4段:“name”、“_”、“type”以及“_type”,name和type会被替换,而_type不会被替换
发表于 2019-08-27 20:41:04 回复(4)
这样写代码确定不会被老板打死?
发表于 2020-05-22 08:52:28 回复(3)
这是c语言??
发表于 2019-11-26 19:23:35 回复(0)
##是一种分隔连接方式,它的作用是先分隔,然后进行强制连接
“name”和第一个“_”之间被分隔了,所以预处理器会把name##_##type##_type解释成4段:“name”、“_”、“type”以及“_type”,name和type会被替换,而_type不会被替换
发表于 2022-05-19 11:42:39 回复(0)
老是欺负我视力不好~
发表于 2021-06-06 09:42:45 回复(0)
<p>主要考察对宏定义中##,分隔强制符,第一处和第二处都能理解,第三处连接的是_type,若在_后面再加上##.则连接的才是type</p>
发表于 2020-10-19 22:18:09 回复(0)
发表于 2022-08-01 11:16:35 回复(0)
发表于 2022-03-26 10:41:00 回复(0)
对于 DECLARE(name, type)
会再预编译时扫描文本, 找到  单独的type 和 粘贴连接的##type, 对于 _type是一个整体, 不同于 type, 所以最后 _type不会被替换
如果要替换 应该是 _##type
发表于 2022-03-19 11:21:33 回复(0)