【C语言】(26)预定义符号

本文详细介绍了编程中的核心预定义符号如__FILE__、__LINE__等,以及编译器特定的预定义符号,展示了它们在条件编译、环境识别和调试中的应用,同时强调了在跨平台编程中对预定义符号使用的注意事项。
摘要由CSDN通过智能技术生成

核心预定义符号

  • __FILE__:字符串类型,表示当前源代码文件的名称。
  • __LINE__:整型,表示当前源代码的行号。
  • __DATE__:字符串类型,表示源文件被编译的日期,格式为 "MMM DD YYYY"
  • __TIME__:字符串类型,表示源文件被编译的时间,格式为 "HH:MM:SS"
  • __FUNCTION__:在C99标准中未定义,但许多编译器提供支持,表示当前函数名称的字符串。
  • __STDC__:整型,如果编译器遵循ANSI C标准,则定义该宏。
  • __STDC_VERSION__:长整型,表示遵循的C标准的版本。例如,C99标准是199901L
  • __func__:C99标准新增,字符串类型,表示当前函数名称。

编译器特定预定义符号

  • __VERSION__:在一些编译器中定义,包含编译器的版本字符串。
  • __clang__:在Clang编译器中定义,可以用来检测代码是否被Clang编译器编译。
  • __GNUC____GNUC_MINOR____GNUC_PATCHLEVEL__:在GCC中定义,分别表示GCC的主版本号、次版本号和补丁级别。
  • _MSC_VER:在Microsoft Visual C++编译器中定义,展开为一个表示编译器版本号的整数。
  • __EXCEPTIONS:在支持异常的C++环境中定义,如果编译器支持异常处理,则定义此宏。
  • __cplusplus:在C++代码中定义,表示C++标准的版本,例如,C++11是201103L
  • __BORLANDC__:在Borland C++编译器中定义,表示Borland C++编译器的版本。
  • _WIN32:在Windows平台上编译时定义,表示代码在Windows环境下编译。
  • __linux__:在Linux平台上编译时定义,表示代码在Linux环境下编译。

应用示例

预定义宏广泛用于条件编译、环境检测和调试信息的生成。例如,使用__FILE____LINE__打印错误发生的文件和行号:

fprintf(stderr, "Error occurred at %s:%d\n", __FILE__, __LINE__);

或者,根据不同的操作系统编写特定的代码段:

#ifdef _WIN32
    // Windows-specific code
#elif defined(__linux__)
    // Linux-specific code
#endif

注意事项

  • 使用预定义宏时,需要了解目标编译器是否支持这些宏。
  • 预定义宏提供了编译时环境的快照,它们不会随着程序的运行而改变。
  • 在跨平台编程时,应谨慎使用特定编译器的预定义宏,以保持代码的可移植性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值