do_forever;//替换,变成了死循环了intm = M;///在预处理过程,M已经被替换成1000了printf("%d\n",m);return0; } #define因为是直接替换,所以利用#define来定义常量在实现一些游戏程序的时候是很方便的,比如,我们写一个三子棋,(或者扫雷),我们需要定义二维数组,此时,我们可以直接定义char board[3][3]={0...
---我是分界线--- 如果定义了MAKE符号那编译器就会编译第一个printf,如果没有定义MAKE符号就会编译第二个printf。 划重点!:#define是定义符号 #ifdef是if is define也就是判断有没有定义这个符号#ifndef是#ifdef的反义代码 #elif 和 else if(...)同义但是#elif就是编译时判断else if()是运行时判断#else参...
__FILE__//进行编译的源文件__LINE__//文件当前的行号__DATE__//文件被编译的日期__TIME__//文件被编译的时间__STDC__//如果编译器遵循ANSI C,其值为1,否则未定义 这些预定义符号都是语言内置的,每一个都有它独特的含义。 📚代码演示: 代码语言:javascript 复制 printf("file:%s line:%d\n",__F...
, __DATE__);printf("当前时间: %s\n", __TIME__); } 程序运行结果截图如下:C标准的预定义宏有很多,例如__STDC__、__STDC_HOSTED__、__STDC_ISO_10646__等等,有兴趣的朋友可以查阅详细文档进行了解,也可以私信我赠送电子版C标准文档。下期我们重点介绍下宏替换。段誉,2024年3月13日,写于合肥。
其余的预定义宏是 GNU C 扩展。 __COUNTER__ 此宏扩展为从 0 开始的顺序整数值。在 换句话说,每次程序使用此宏时,它都会生成 next successive integer 的 Batch。这与运算符一起提供 宏生成唯一标识符的便捷方法。## __GNUC__ __GNUC_MINOR__ ...
一、预定义标识符的定义和作用 预定义标识符是在C语言中预先设定的一类标识符,它们在程序编译时具有固定的意义和功能。预定义标识符可分为以下几类: 1.关键字:如if、else、while等,用于表示程序的控制结构。 2.标准库函数:如printf、scanf等,用于实现输入输出功能。 3.类型标识符:如int、float、double等,用于声...
一.预定义符号 C标准定义了如下五个预处理符号 在文件输入输出以及输出日志等场合下我们会用到这些预处理符号,比如 \+回车 : 续行符,转义字符,后面不能加任何除回车之外的字符,否则会报错 二.#define关键字 #define有两个作用,一个是定义标识符,第二个是定义宏 ...
预定义宏是C语言中标准编译器预先定义的宏,在ANSI标准中C程序有5个预定义宏可以直接使用。ANSI标准中说明了以下5个宏替换名,可以直接使用 _LINE_:当前编译的代码的行号 _FILE_:当前编译文件的源文件名 _DATE_:当前源程序创建的日期 _TIME_:当前源程序创建的时间 _STDC_:判断当前的编译器是否为标准C编译器...
预定义符号一共有⑤种,如下所示↓ __FILE__:表示进行编译的文件名。 __LINE__:表示文件当前的行号。 __DATE__:表示文件被编译的日期。 __TIME__:表示文件被编译的时间。 __STDC__:如果编译器遵循的是ANSIC,其中值为1,不然就是未定义。 __FUNCTION__:表示该函数所在的函数名。