C语言中宏名有类型吗?

如题所述

C语言中,宏名没有类型,其参数也没有类型。

宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时代入指定的字符串即可。宏定义时,字符串可以是任意类型的数据。

在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换。



扩展资料

带参宏注意事项:

1、宏名和形参表的括号间不能有空格。

2、宏替换只作替换,不做计算,不做表达式求解。

3、函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。

4、函数只有一个返回值,利用宏则可以设法得到多个值。

5、宏展开使源程序变长,函数调用不会。

6、宏展开不占用运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。

7、为防止无限制递归展开,当宏调用自身时,不再继续展开。 如:#define TEST(x) (x + TEST(x))被展开为1 + TEST(1)。

温馨提示:答案为网友推荐,仅供参考
相似回答