预处理器
编译一个C程序涉及很多步骤。其中第一个步骤被称为预处理器(preprocessing)阶段。C预处理器(preprocessor)在源代码编译之前对其进行一些文本形式的操作。它的主要任务包括删除注释、插入被#include指令包含的文件的内容、定义和替换由#define指令定义的符号,以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。
14.1 预定义符号
表14.1总结了由预处理器定义的符号。它们的值或者是字符串常量,或者是十进制数字常量。__FILE__和__LINE__在确认调试输出的来源方面很有用处。__DATE__和__TIME__常常用在被编译器的程序中加入版本信息。__STDC__用于在那些ANSI环境和非ANSI环境都必须进行编译的程序中结合条件编译。
表14.1 预处理符号
符号 示例值 含义
__FILE__ "name.c" 进行编译的源文件名
__LINE__ 25 文件当前行的行号
__DATE__ "Jan 31 1997" 文件被编译的日期
__TIME__ "18:04:30" 文件被编译的时间
__STDC__ 1 如果编译器遵循ANSI C,其值就是1,否则未定义
/*
** 预定义符号。
*/
#include <stdio.h>
#include <stdlib.h>
int main( void ){
printf( "filename = %s\n", __FILE__ );
printf( "line = %d\n", __LINE__ );
printf( "date = %s\n", __DATE__ );
printf( "time = %s\n", __TIME__ );
printf( "ansi standard: %d\n", __STDC__ );
return EXIT_SUCCESS;
}
/* 输出:
*/