找回密码
 register

QQ登录

只需一步,快速开始

查看: 4|回复: 0

[C语言] C语言 时间 行号 编译器相关 预定义宏整理

[复制链接]

[C语言] C语言 时间 行号 编译器相关 预定义宏整理

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:124
  • 打卡月天数:20
  • 打卡总奖励:123
  • 最近打卡:2025-02-25 16:03:10
Waylee

主题

0

回帖

1万

积分

仙帝

积分
14034
Waylee 2025-2-25 22:36 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

C/C++ 预定义宏整理

1. 编译时间相关

  • __DATE__:当前编译的日期,格式为 "Mmm dd yyyy"(如 "Feb 25 2025")。
  • __TIME__:当前编译的时间,格式为 "hh:mm:ss"(如 "14:30:15")。
  • __TIMESTAMP__(某些编译器支持,如 GCC):文件最后修改的时间,格式通常为
    "Day Mmm dd hh:mm:ss yyyy"(如 "Tue Feb 25 14:30:15 2025")。

2. 代码文件和行号

  • __FILE__:当前源文件的名称,通常包含完整路径(如 "C:/Project/main.cpp")。
  • __LINE__:当前行号(如 42)。
  • __func__(C99 及 C++11 以上):当前函数的名称。

3. 编译器和标准

  • __cplusplus(仅 C++):定义了 C++ 标准的版本,例如:

    • 199711L(C++98)
    • 201103L(C++11)
    • 201402L(C++14)
    • 201703L(C++17)
    • 202002L(C++20)
    • 202302L(C++23)
  • __STDC__(仅 C):如果定义了,则表示是符合 ANSI C 标准的编译器。

  • __STDC_VERSION__(C99 及以上):C 语言标准的版本,如:

    • 199409L(C90 修订版)
    • 199901L(C99)
    • 201112L(C11)
    • 201710L(C17)
  • __GNUC__(GCC 编译器):GCC 版本号,如 __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__

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

4. 其他

  • __FUNCTION__(GCC / Clang / MSVC):与 __func__ 类似,但 MSVC 仅支持 __FUNCTION__
  • __PRETTY_FUNCTION__(GCC / Clang):比 __func__ 更详细,包含完整的函数签名。
  • _Pragma()(C99 及 C++11 以上):比 #pragma 更灵活,可在宏定义中使用。

示例代码

#include <cstdio>

int main() {
    printf("Compiled on %s at %s\n", __DATE__, __TIME__);
    printf("File: %s, Line: %d, Function: %s\n", __FILE__, __LINE__, __func__);
    return 0;
}

编译后运行的输出示例

Compiled on Feb 25 2025 at 14:30:15
File: C:/Project/main.cpp, Line: 6, Function: main

这样可以帮助你在日志或调试信息中追踪编译信息和代码位置。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-2-26 03:59 , Processed in 0.102677 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表