当前位置: 首页 > news >正文

C语言编程中常用的预定义宏

        在C语言编程中,有许多预定义宏可用于获取编译环境、代码位置或调试信息。以下是常见的预定义宏分类及说明:

1. ​​代码位置与文件信息​

  • __FILE__:当前源文件的完整路径名(字符串形式),常用于调试日志中定位文件

  • __LINE__:当前代码行的行号(整数),与__FILE__结合可精确定位错误位置

  • __func__(C99引入):当前函数的名称(字符串),功能与__FUNCTION__类似,但更标准化


2. ​​编译时间信息​

  • __DATE__:编译日期,格式为"Mmm dd yyyy"(如"Feb 25 2025"

  • __TIME__:编译时间,格式为"hh:mm:ss"(如"14:30:15"

  • __TIMESTAMP__(部分编译器支持,如GCC):源文件最后修改的时间,格式更详细(如"Day Mmm dd hh:mm:ss yyyy"


3. ​​编译器与标准支持​

  • __STDC__:若定义为1,表示编译器符合ANSI C标准。

  • __STDC_VERSION__:指示支持的C标准版本(如199901L表示C99,201112L表示C11)。

  • __cplusplus(仅C++):表示C++标准版本(如201703L表示C++17)。

  • 编译器特定宏:

    • __GNUC__(GCC):主版本号,__GNUC_MINOR__为次版本号。

    • _MSC_VER(MSVC):Microsoft编译器版本号。


4. ​​其他调试相关宏​

  • __PRETTY_FUNCTION__(GCC/Clang):扩展版的__func__,包含函数签名(如返回类型和参数列表)

  • _Pragma()(C99及以上):动态生成#pragma指令,可在宏中使用


5. ​​条件编译与平台检测​

  • _WIN32:标识Windows平台

  • __linux__:标识Linux平台

  • __APPLE__:标识macOS/iOS平台

http://www.lryc.cn/news/610112.html

相关文章:

  • 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎
  • 【深度学习新浪潮】近三年城市级数字孪生的研究进展一览
  • push/pop字节对齐使用场景
  • Next Terminal 实战:内网无密码安全登录
  • cocos2 场景跳转传参
  • 佰力博检测与您探讨介温谱和介电谱的区别?
  • 【实战】Dify从0到100进阶--中药科普助手(1)
  • 7.1、《软件工程》-软件生命周期-CMM-开发模型
  • 【2025/08/04】GitHub 今日热门项目
  • 【2025-08-04 Java学习小记】
  • Linux磁盘分区与挂载完全指南
  • Java基础学习(一):类名规范、返回值、注释、数据类型
  • 使用1panel将http升级至https的过程
  • javacc学习笔记 03、编译原理实践 - JavaCC解析表达式并生成抽象语法树
  • 深入解析线程同步中WaitForSingleObject的超时问题
  • 【Java基础知识 17】面向对象编程
  • Adobe Experience Manager (AEM) Assets|企业级数字资产管理平台(DAM)
  • javacc学习笔记 01、JavaCC本地安装与测试
  • TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
  • 厄米系统(Hermitian System)
  • Go 函数选项模式
  • 模型学习系列之考试
  • day15 SPI
  • 疏老师-python训练营-Day35模型可视化推理
  • Golang中的`io.Copy()`使用场景
  • #C语言——刷题攻略:牛客编程入门训练(四):运算(二)
  • 网站从HTTP升级到HTTPS网址方法
  • 北京JAVA基础面试30天打卡01
  • 【多智能体cooragent】CoorAgent 系统中 5 个核心系统组件分析
  • 力扣-1.两数之和