C语言,宏名有类型,其参数也有类型?对嘛?判断
展开全部
C语言中,宏名没有类型,其参数也没有类型。
宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时代入指定的字符串即可。宏定义时,字符串可以是任意类型的数据。
在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换。
扩展资料
带参宏注意事项:
1、宏名和形参表的括号间不能有空格。
2、宏替换只作替换,不做计算,不做表达式求解。
3、函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。
4、函数只有一个返回值,利用宏则可以设法得到多个值。
5、宏展开使源程序变长,函数调用不会。
6、宏展开不占用运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。
7、为防止无限制递归展开,当宏调用自身时,不再继续展开。 如:#define TEST(x) (x + TEST(x))被展开为1 + TEST(1)。
2013-04-19
展开全部
不对,C语言中,宏名没有类型,其参数也没有类型
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-05-24 · 知道合伙人互联网行家
关注
展开全部
宏替换是在预编译时完成的,预编译的功能是将头文件引入,并且将定义的宏按字面完成“傻瓜”式替换(即将符合宏的样式的字符串,替换成宏定义的字符串),宏名没有类型区分,它只是个字符串。因此,D是错的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错!宏名没有类型,其参数也没有类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询