概述
1、在Unix系统中,尖括号告诉预处理器在一个或多个标准系统目录中寻找文件。双引号告诉预处理器先在当前目录(或文件名中指定的其他目录)中寻找文件,然后在标准位置寻找文件。
2、#undef指令:取消定义一个给定的#define
#define LIMIT 400 #undef LIMIT
3、条件编译
#ifdef、#else和#endif指令
#ifdef 宏名 //语句段1 #else //语句段2 #endif
作用:当标识符已经被定义过(一般是用#define命令定义),则对语句段1进行编译,否则编译语句段2。
其中#else部分可以没有
#ifdef 宏名 //语句段1 #endif
#ifndef指令
#ifndef 宏名 //语句段1 #else //语句段2 #endif
作用:若标识符未被定义则编译语句段1,否则编译语句段2。
#else可以用于#ifdef和#ifndef中,但#elif不可以
#if和#elif指令
#if 表达式 // 语句段1 [#else // 语句段2] #endif
#if 表达式1 // 语句段1 #elif 表达式2 // 语句段2 #else // 语句段3 #endif
#error
指令将使编译器显示一条错误信息,然后停止编译
#line
指令可以重置由__LINE__和__FILE__宏报告的行号和文件名
#line 1000 //把当前行号重置为1000 #line 10 “cool.c” //把行号重置为10,文件名重置为cool.c
#pragma
指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息
实际的例子
#include <stdio.h> #define LETTER 1 int main( int argc, char * argv[] ) { char str[20]="C Language",c; int i; i=0; while( (c=str[i]) != '