C 语言中预定义宏有哪些?

· 约 3 分钟读完 · 第 112 / 143 章

推荐答案

在C语言中,预定义宏是由编译器预先定义的一些宏,它们提供了关于编译环境的信息。以下是一些常见的预定义宏:

  1. __LINE__:当前源代码的行号。
  2. __FILE__:当前源代码的文件名。
  3. __DATE__:编译时的日期,格式为 "MMM DD YYYY"。
  4. __TIME__:编译时的时间,格式为 "HH:MM:SS"。
  5. __STDC__:如果编译器遵循ANSI C标准,则定义为1。
  6. __STDC_VERSION__:表示C标准的版本号。
  7. __cplusplus:如果编译器是C++编译器,则定义为一个值,表示C++标准的版本。
  8. __func__:当前函数的名称(C99标准引入)。

本题详细解读

__LINE__

__LINE__ 宏会在编译时被替换为当前代码所在的行号。这个宏常用于调试,帮助开发者定位代码中的问题。

__FILE__

__FILE__ 宏会在编译时被替换为当前源代码的文件名。这个宏通常用于日志记录或调试信息中,以便开发者知道问题发生在哪个文件中。

__DATE__

__DATE__ 宏会在编译时被替换为编译时的日期,格式为 "MMM DD YYYY"。这个宏可以用于记录编译时间,帮助开发者了解代码的编译时间。

__TIME__

__TIME__ 宏会在编译时被替换为编译时的时间,格式为 "HH:MM:SS"。这个宏通常与 __DATE__ 一起使用,记录编译的精确时间。

__STDC__

__STDC__ 宏用于检查编译器是否遵循ANSI C标准。如果编译器遵循ANSI C标准,则 __STDC__ 被定义为1,否则未定义。

__STDC_VERSION__

__STDC_VERSION__ 宏表示C标准的版本号。例如,C99标准对应的值为 199901L,C11标准对应的值为 201112L。

__cplusplus

__cplusplus 宏用于检查编译器是否为C++编译器。如果是C++编译器,则 __cplusplus 被定义为一个值,表示C++标准的版本。

__func__

__func__ 宏是C99标准引入的,用于获取当前函数的名称。这个宏常用于调试,帮助开发者了解当前执行的函数。

这些预定义宏在C语言编程中非常有用,尤其是在调试和日志记录中,它们可以帮助开发者更好地理解代码的执行环境和状态。