C预处理器不是编译器的组成部分,是编译过程中一个单独的步骤。
简言之,C预处理器只是一个文本替换工具而已。
C预处理器: C Preprocessor
北航考研911 C语言预处理指令相关知识 |
C预处理指令
常见预处理指令
C预处理器不是编译器的组成部分,是编译过程中一个单独的步骤。
简言之,C预处理器只是一个文本替换工具而已。
C预处理器: C Preprocessor
#define 定义宏
#include 包含一个源代码文件
#undef 取消已定义的宏
#ifdef 如果宏已经定义,则返回真
#ifndef 如果宏没有定义,则返回真
#if 如果给定条件为真,则编译以下代码
#else #if的代替方案
#elif 如果前面if为假,当前真,则编译以下代码
#endif 结束一个#if ...#else 条件编译块
#error 当遇到标准错误时,输出错误信息
#pragma 使用标准化方法,向编译器发布特殊的命令
系统预定义宏
__DATE__
__TIME__
__FILE__
__LINE__
__STDC__
预处理器运算符
宏延续运算符 \
字符串常亮化运算符 #
标记粘贴运算符 ##
参数化的宏
宏调用时是以实参代换形参。而不是“值传递”。
例子
#include <stdio.h> #define MAX(x,y) ((x) > (y) ? (x) : (y)) int main(void) { printf("Max between 20 and 10 is %d\n", MAX(10, 20)); return 0; }
文件包含
1.使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的include目录),而不在当前源文件目录去查找;使用双引号则表示首先在当前源文件目录中查找,若未找到才到包含目录中去查找。用户编程时可根据自己文件所在的目录来选择某一种命令形式。
2.一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。
3.文件包含允许嵌套
#include "common.h"
#include <common.h>