对于function-like macro的参数,如果是#或者##的操作数,则会马上扩展为相应的字符串;否则会先扩展,再替换,循环此操作,直到完成。 对于h(f(1,2)),由于h(a)是非#或##的普通宏,需要先宏展开其参数a,即展开f(1,2)为12,则h(a) 宏替换为h(12),进而宏替换为g(12), 进而宏替换为12。 对于g(f(1,2)...
其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格 解释成分段标志,对于每一段和前面比较,相同的就被替换。但是这样做的结果是, 被替换段之间存在一些空格。如果我们不希望出现这些空格,就可以通过添加一些 ##来替代空格。 另外一些分隔标志是,包括操作符,比如 +, -, *, /, [,], .....
do{...}while(0)在C中是唯一的构造程序,让你定义的宏总是以相同的方式工作,这样不管怎么使用宏(尤其在没有用大括号包围调用宏的语句),宏后面的分号也是相同的效果。 这句话听起来可能有些拗口,其实用一句话概括就是:使用do{...}while(0)构造后的宏定义不会受到大括号、分号等的影响,总是会按你期望的方...
宏展开后else前面多了一个;语法错误 if(bIsOk){f(42);g(42);};elseNSLog(@"xxx"); 合法化代码,作用域保护 看下面的宏定义 #defineMY_MACRO(x) int i = x + 1 ; f(i) ; 在以下函数调用中出问题 voiddoSomething(){inti=25;MY_MACRO(32);} 上面的代码展开后, 编译出错 voiddoSomething(){int...
对宏定义的不正确描述( ) A. 宏定义是用宏名代替一个字符串。 B. #define 的作用范围,是整个源文件有效。 C. 宏名可以在其它宏定义中引用,可以层层替换。 D. 用双引号扩起来的字符串,即使与宏名相同,也不进行置换。 相关知识点: 试题来源: 解析 B ...
A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 相关知识点: 试题来源: 解析 B.可以使用#undef命令来终止宏定义的作用域 反馈 收藏 ...
(1)在国际单位制中,用来作为基本温标的是( )。 A.摄氏温标 B.华氏温标 C.热力学温标 D.国际实用温标 点击查看答案&解析手机看题 单项选择题 一对渐开线齿轮连续传动的条件是 。 A、重合度大于等于1 B、重合度小于1 C、重合度等于1 D、重合度小于等于1 ...
关于关键字const的说法错误的是A.const定义的变量,它的值不能被改变,在整个作用域中都保持固定B.同宏定义一样,可以避免意义模糊的数字出现,同样可以很方便地进行参
然后,整款鼠标分布着1+9个自定义按键,其中,9个均为基础功能键,支持驱动编辑宏定义、多媒体、组合键等多种功能,1个则是防误触DIY独立键(出厂默认回报率切换),支持功能自定义设置,切换参数模式等功能。此外,鼠标底部也是磁吸USB接收器收纳仓,方便存取。 而游戏上的话,为了高强度手感,雷柏VT1PRO MAX游戏鼠标采用C...
3 . )在X86汇编语言中 伪指令PURGE 的作用是局部化宏定义中的标号。( )对 错 温馨提示:做题需要 沉着、冷静、细致、认真!正确答案 点击免费查看答案 试题上传试题纠错TAGS汇编语言指令PURGE作用局部定义中的标号 关键词试题汇总大全本题目来自[12题库]本页地址:https://www.12tiku.com/newtiku/919789/2397062...