系统常用宏定义__TIME__ __DATE__ __LINE__等

本文详细介绍了C语言中预处理宏的使用,包括__TIME__、__DATE__、__TIMESTAMP__、__LINE__、__FILE__和__FUNCTION__等,展示了如何在代码中获取编译时的时间、日期、文件名、行号及函数名,适用于C/C++开发者学习和参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输出系统时间

printf("\n mycode  Build on "__TIME__" "__DATE__" win7\n");

打印的结果是:

 mycode  Build on 15:39:58 Apr 19 2019 win7

系统常用的宏定义:

__TIME__:当前系统时间  例如 15:39:58

__DATE__:当前系统日期  Apr 19 2019

__TIMESTAMP__:当前时间日期 例如:  printf(__TIMESTAMP__);   打印结果Fri Apr 19 16:24:31 2019

__LINE__: 当前代码行 例如: printf("%d",__LINE__);

__FILE__:执行的当前文件名  例如:  printf(__FILE__);

__FUNCTION__:打印函数名 printf("%s",__FUNCTION__); 或者printf(__FUNCTION__);只要是字符串的都可以这样

示例代码:

#include <stdio.h>


void main()
{
	printf("\nmy code build on "__TIME__" "__DATE__" "__FILE__"   行号 %d  sdf\n ",__LINE__);
	printf(""__FILE__" \n");
	printf("%d \n",__STDC__);
	printf("%s \n",__TIMESTAMP__);
	//printf(__TIMESTAMP__);
//	printf("\n %s fsfs", __FUNCTION__);
	printf(__FUNCTION__);
	printf("\n");
}

通过gcc编译,打印的结果如下:

### C/C++ 预定义宏功能和用法 #### `__FILE__` 宏 此宏扩展为一个字符串字面量,表示当前文件的名称。这有助于调试程序时识别错误发生的文件位置[^1]。 ```cpp #include <iostream> using namespace std; int main() { cout << "The current file is: " << __FILE__ << endl; } ``` #### `__LINE__` 宏 该宏被替换为一个整数常量表达式,代表当前行号,在追踪代码执行路径或报告警告信息时非常有用[^2]。 ```cpp cout << "Error occurred at line number: " << __LINE__; ``` #### `__FUNCTION__` 和 `__func__` 宏 这两个宏都返回当前正在被执行函数的名字作为字符串。不同之处在于兼容性和标准支持程度上有所差异;`__func__` 是 ISO C99 的一部分而更广泛接受,但在较旧版本如 VC6.0 中可能不受支持[^3]。 ```cpp const char* getFunctionName() { return __func__; // or use __FUNCTION__ } // 输出调用处所在的方法名 void someMethod() { cout << "Current method name:" << getFunctionName(); } ``` 除了上述提到的几个常见预处理指令外,还有更多有用的内置宏: - **`__DATE__`**:提供编译日期的信息,格式为 `"Mmm dd yyyy"`。 - **`__TIME__`**:给出编译时间,形式类似于 `"hh:mm:ss"`。 这些可以用来记录构建时间和环境详情,对于版本控制特别有帮助[^4]。 最后值得注意的是,具体的可用性可能会因所使用的编译器及其配置参数的不同而变化。例如 Visual Studio 可能会根据项目设置来决定哪些额外的内部符号会被自动定义出来[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值