C预处理器:
指令 | 描述 |
---|---|
#define | 定义宏(MACRO) |
#include | 包含一个源代码文件 |
#undef | 取消已定义的宏 |
#ifdef | 如果宏已经定义,则返回真 |
#ifndef | 如果宏没有定义,则返回真 |
#if | 如果给定条件为真,则编译下面代码 |
#else | #if 的替代方案 |
#endif | 结束一个if..else条件编译块 |
#error | 当遇到标准错误时,输出错误消息 |
#pragma | 使用标准化方法,向编译器发布特殊的命令到编译器中 |
运用:
#define MIN_ARRAY_COUNT 20;
这个指令告诉CPP把所有MIN_ARRAY_COUNT替换为20;
#define SIMPLE_SUM_METHOD(x) \
((x) * (x))
如果宏太长,一个单行容纳不下,则使用宏延续运算符(\);
#include <stdio.h>
#include "myBook.h"
这个指令告诉CPP从系统库中获取stdio.h,并添加到当前源文件中;
在本地目录查找myBook.h文件,并添加到当前源文件中;
#undef MIN_ARRAY_COUNT;
#define MIN_ARRAY_COUNT 40;
#undef指令先取消已定义的宏MIN_ARRAY_COUNT,#define MIN_ARRAY_COUNT 40 再次定义宏MIN_ARRAY_COUNT为40;
#ifndef MIN_ARRAY_COUNT
#define MIN_ARRAY_COUNT 20
#endif
这个指令告诉 CPP 只有当 MIN_ARRAY_COUNT 未定义时,才定义 MIN_ARRAY_COUNT。
#ifdef DEBUG
#define MIN_ARRAY_COUNT 40
#endif
这个指令告诉 CPP 如果定义了 DEBUG,则执行处理语句。在编译时,如果您向 gcc 编译器传递了 -DDEBUG 开关量,这个指令就非常有用。它定义了 DEBUG,您可以在编译期间随时开启或关闭调试。
预定义宏
宏 | 描述 |
---|---|
__DATE__ | 当前日期, 以 “MMM DD YYYY” 格式表示的字符常量 |
__TIME__ | 当前时间,以 “HH:MM:SS” 格式表示的字符常量 |
__FILE__ | 当前文件名,一个字符串常量 |
__LINE__ | 当前行号,一个十进制常量 |
__STDC__ | 编译器以 ANSI 标准编译时,则定义为 1 |
#include <stdio.h>
int main() {
printf("File :%s\n", __FILE__ );
printf("Date :%s\n", __DATE__ );
printf("Time :%s\n", __TIME__ );
printf("Line :%d\n", __LINE__ );
printf("ANSI :%d\n", __STDC__ );
return 0;
}
结果:(Xcode运行结果)
File :/Users/wangyong/Desktop/CCalculate/CCalculate/main.m
Date :Apr 1 2017
Time :22:37:59
Line :159
ANSI :1
Program ended with exit code: 0