1,宏定义,有参宏,无参宏,宏定义实现的是定义一个符号常量;
条件编译3种方式,文件包含含义;
不带参数的宏定义;既用一个指定的的标识符来代替一个字符串; #define RUIY 10000000 把标识符定义为字符串,在进行编译预处理时,编译系统就能把程序中出现的标识符用字符串去替代,然后再对预处理后的程序进行编译; 与typedef 给系统中已存在的数据类型重新定义别名类似,但是是有区别的; typedef char * String; 使用不带参数的宏定义 #include <stdio.h> #define PI 3.1415926 int main(){ float s,r,v,l; printf("Please input radius longs:"); scanf("%f",&r); }
2,宏名一般用大写,以便于变量加以区别;
使用宏名代替字符串可以提高程序的运行效率
宏名语句后不加分号;以便于通常的C语句区别开来;
宏名定义的有效范围为从定义处起到源程序文件的末尾;
可用#undef终止宏定义的作用范围 ;
在进行宏定义时可引用以定义的宏名;
对程序中用用双引号括起来的标识符在预处理时不作字符替换,
宏定义只作字符替换,预处理时不分配内存;
void main() { printf("l=%10.4\nv=%10.4\ns=%10.4\n"); }
5,带参数的宏定义
带参数的宏定义不只是简单的字符替换,还要进行参数替换; 一般定义形式: #define 宏名标识符(参数列表) 字符串
6,条件编译
6,#if
#if condition code; #elif require code; #else code; #endif
条件编译分别可以实现:
1,代码注释,2,宏名定义判断,3,宏变量值;