一》宏定义: 1、不带参数: #define 标识符 常量表达式 /*#define 是宏定义命令,宏名(标识符)好习惯用大写*/ #define NIL 0x 80 2、带参数:/*相当于小函数*/ #define 宏名(参数表) 字符串 /*不仅要时行字任串替换还要进行参数的替换,在宏定义时,宏名与带参数的括弧之间不应该加空格,否则将空格以后的字符串都作为替代字符串的一部分,这可是很容易出错的*/ 如:#define SQ(a,b) a*b 使用:x =12;y =10;area=SQ(x ,y );/*则 area=12*10=120*/ 二》文件包含: #inclu de 或#inclu de "文件名" /*在 C 中用双引用形式更保险,在 C51中常用物是尖括弧形式*/ 三》条件编译: /*一般源程序中的所有程序行都参加编译,但有时希望对其中一部分内容只在满足一定条件下才进行编译,也就是对一部分内容指定编译的条件
*/ #if、#elif、 #else、#endif、#ifdef、#ifndef /*选择不同的编译范围,产生不同的代码,提供通用性
*/ /*如对8051在6MHZ 与12MHZ 下有*/ #ifdef cpu ==8051 #define FREQ 6 /*程序段*/ #else #define FREQ 12/*程序段*/ #endif /*这样下面的原程序不用做任何修改便可以使用于两种时钟频率的单片机系统*/ 四》其他: 1、#error:捕捉不可预料的编译条件 #if (my v
=0&&my v
=1)/*假定其值必为0或1*/ #error my v mu st be 1 or 0/*出错时显示*/ #endif 2、#pragma:用于在程序中向编译器传送各种编译控制命令 #pragma 编译命令序列 /*例:想按如下命令编译ex