❀*不带参数的宏定义***
1.宏定义指令#define:
用来定义一个标识符和一个字符串,以这 个标识符来代表这个字符串,在程序中每次遇到该标识符时就用所定义的字符串替换它。
2.宏定义的作用:
相当于给指定的字符串起一个别名。
不带参数的宏定义一般形式如下:
#define 宏名 字符串
#表示这是一条预处理命令。
宏名是一个标识符,必须符合C语言标识符的规定。
字符串可以是常数、表达式、格式字符串等。
下面我们举一个例子来看看叭👀
例如:#define PI3.14159
首先呐,该语句的作用是在该程序中用PI替代314159,在编译预处理时,每当在源程序中遇到PI就自动用3.14159代替。
有没有感觉它真的很方便呢
☆使用#define进行宏定义的好处:
首先呢是需要改变一个常量时只需改变#define 命令行,整个程序的常量都会改变,这样就大大提高了程序的灵活性吖。
☆宏名要简单且意义明确,一般习惯用大写字母表示,以便与变量名相区别。
♞注意啦:宏定义不是C语句,不需要在行末加分号。一定不要加; ฅ˙Ⱉ˙ฅ
3.宏名定义后,即可成为其他宏名定义中的一部分。
例如,下面代码定义了正方形的边长SIDE、周长PERIMETER及面积AREA的值。
#define SIDE 5
#define PERIMETER 4SIDE
#define AREA SIDESIDE
前面说过的嗷,宏替换是以串代替标识符。
so,如果希望定义一个标准的邀请语,可编写如下代码
#define STANDARD “You are welcome to join us.”
printf(STANDARD);
编译程序遇到标识符STANDARD时,就用"You are welcome to join us."替换。
对于编译程序来说呢,
printf语句如下形式是等效的:
printf(“possible use of ‘t’ before definition in function main”):
4.关于不带参数的宏定义,有以下几点需要啰嗦啰嗦呐。
①如果在串中含有宏名,则不进行替换。
例如:
#include<stdio.h>
#define TEST “this is an example”
main()
{
char exp[30]=“This TEST is not that TEST”;
printf("%s\n",exp);
}
该段代码输入结果你猜猜是什么呢
哈哈哈,是这样的啦
This TEST is not that TES
Press any key to continue
明显可以看出来TEST没有用“this is an example”
因此要记住嗷:如果串中含有宏名,则不进行替换。
②如果串长于一行,可以在该行末尾用反斜杠“\”续行。
③#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束。
♞温馨提示嗷:在编写程序时通常将所有的#define放到文件的开始处或独立的文件中,而不是将它们分散到整个程序中。
④可以用#undef命令终止宏定义的作用域,例如:
#include<stdio.h>
#define TEST “this is an example”
main()
{
printf(TEST);
#undef TEST
}
⑤宏定义用于预处理命令,它不同于定义的变量,只做字符替换,不分配内存空间。
•ᴗ•
有什么不妥希望大家多多指教,我们的故事未完待续嗷,下次是带参数的宏定义嗷!
ฅ˙Ⱉ˙ฅ大家共勉啦
哪有什么一夜成名,其实都是百炼成钢 .