C语言中,宏名没有类型,其参数也没有类型。
宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时代入指定的字符串即可。宏定义时,字符串可以是任意类型的数据。
在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换。
扩展资料
带参宏注意事项:
1、宏名和形参表的括号间不能有空格。
2、宏替换只作替换,不做计算,不做表达式求解。
3、函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。
4、函数只有一个返回值,利用宏则可以设法得到多个值。
5、宏展开使源程序变长,函数调用不会。
6、宏展开不占用运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。
7、为防止无限制递归展开,当宏调用自身时,不再继续展开。 如:#define TEST(x) (x + TEST(x))被展开为1 + TEST(1)。