- 预定义的宏名
为了有助于得到一些程序员需要的信息,在ANSI标准C编译程序中,提供了5个宏名,它们是:
__LINE__ :含有当前编译行的行号。例如,下例最后编译的是第三行,所
以宏名 __LINE__的值是3。
__FILE__ :含有当前编译的源文件的文件名。例如,下例编译的是源文
件"macro.c"所以宏名__FILE__指出的是字符串"macro.c"。
__DATE__ :含有源文件被编译成目标文件时的日期(月 日 年)。
例如,下例源文件"macro.c" 被编译成目标
文件"macro.obj"的日期是"Jun 15 2002"。
__TIME__ :含有源文件被编译成目标文件的时间(时:分:秒)。例如,
下例源文件"macro.c" 被编译成目标文件"macro.obj"的时间
是"16:42:11"。
__STDC__ :如果其值为1,表示使用的是标准版本。否则,表示使用的是
非标准版本。
例如,有C程序macro.c如下:
#includemain(){
printf("%s *** %d line *** %s
***%s\n",__FILE__,__LINE__,__DATE__,__TIME__);
}
运行结果是:
macro.c *** 3 line *** Jun 15 2002 *** 16:42:11
- line命令
#line预编译语句用于更改宏名__FILE__和__LINE__所指的字符串内容。其一般形式是:
#line number ["filename"]
其中:
number是任意正整数,它指出源文件中#line预编译语句所在位置之后的第一个C语句的行号是number。其实,#line number构成了一个行计数器,number指出了行号从几开始计数。例如:
#include
#line 100
main()
{ printf("%d\n", __LINE__); }
由于行计数器从100开始计数,所以printf("%d\n", __LINE__)语句的行号是102。
"filename" 这是一个可省缺的项。使用时给出源文件名,它将作为宏名__FILE__所指的字符串。
2007年7月16日星期一
预编译开关#line的解释
订阅:
博文评论 (Atom)

没有评论:
发表评论