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平台