标准预定义的宏

标准预定义宏是由相关的语言标准规定的,所以它们可以在所有执行这些标准的编译器中使用。旧的编译器可能不会提供所有这些宏。它们的名字都以双下划线开头。

__FILE__
这个宏扩展为当前输入文件的名称,以 C 字符串常数的形式。这是预处理器打开文件的路径,而不是在’#include’中指定的或作为输入文件名参数的短名称。例如,"/usr/local/include/myheader.h "是这个宏的一个可能扩展。

__LINE__
这个宏扩展为当前的输入行号,以十进制整数常数的形式。虽然我们称它为预定义的宏,但它是一个相当奇怪的宏,因为它的 "定义 "随着每一行新的源代码而改变。

__FUNCTION__
C99引入了__func__,而GCC提供__FUNCTION__已经有很长一段时间了。这两个都是包含当前函数名称的字符串(有轻微的语义差异;见GCC手册)。它们都不是一个宏;预处理器不知道当前函数的名称。不过它们往往与__FILE____LINE__一起使用。

__DATE__
这个宏扩展为一个字符串常数,描述预处理器运行的日期。这个字符串常数包含11个字符,看起来像 “Feb 12 1996”。如果该月的日期小于10,则在其左边填充一个空格。

__TIME__
这个宏扩展为一个字符串常数,描述了预处理程序运行的时间。这个字符串常数包含八个字符,看起来像 “23:59:01”。

__STDC__
在正常操作中,此宏扩展到常量 1,以表示此编译器符合 ISO 标准 C。如果 GNU CPP 与 GCC 以外的编译器,这不一定是真的;然而, 除非使用该选项,否则预处理器始终符合标准。

你可能感兴趣的:(GNU,c语言)