首页 > 试题广场 >

定义宏#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-15 16:52:12 回复(0)
'#'是把宏参数转化为字符串的运算符,'##'是把两个宏参数连接的运算符。 例如: ————————————————————#define STR(arg) #arg 则宏STR(hello)展开为”hello” ———————————————————— #define NAME(y) name_y 则宏NAME(1)展开时仍为name_y—————————————————————— #define NAME(y) name_##y 则宏NAME(1)展开为name_1—————————————————————— #define DECLARE(name, type) type name##_##type##_type, 则宏DECLARE(val, int)展开为int val_int_type
编辑于 2019-01-21 09:39:17 回复(0)