__FILE__,__LINE__,__DATE__,__TIME__ c++常用的预定义名字

C++有四个常用的预定义名字,分别为:__FILE__,__LINE__,__DATE__,__TIME__

__FILE__:记录文件的路径加名称

__LINE__:记录文件已经被编译的行数

__DATE__:记录文件的编译日期

__TIME__:记录文件的编译时间

可以当作变量直接使用,一般用作程序调试

例子:

#include <iostream>

using namespace std;

int main()
{
 
    cout << "File = " << __FILE__ << ‘\n‘
       << "LINE = " << __LINE__ << ‘\n‘
       << "DATE = " << __DATE__ << ‘\n‘
       << "TIME = " << __TIME__
       << endl; 
    getchar();
}

运行结果:

File = G:/program/study/c++/test1.cpp
LINE = 17
DATE = May 27 2004
TIME = 09:59:01

用于打印日志、调试非常方便

下面函数是把__DATE__宏转换成 time_t的时间类型,便于进行操作

static time_t getDateFromMacro(char const *time) {
    char s_month[5];
    int month, day, year;
    struct tm t = {0};
    static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";

sscanf(time, "%s %d %d", s_month, &day, &year); month = (strstr(month_names, s_month)-month_names)/3;

t.tm_mon = month;
    t.tm_mday = day;
    t.tm_year = year - 1900;
    t.tm_isdst = -1;

return mktime(&t);
}

时间: 2024-10-09 23:29:30

__FILE__,__LINE__,__DATE__,__TIME__ c++常用的预定义名字的相关文章

__FILE__ __LINE__ __DATE__ __TIME__宏

项目中总是看到__FILE__ __LINE__的玩意,想起来曾经在Linux内核源码中也看到过类似的东西.抽时间查了查这玩意是什么. 简单而言.是ANSI C预定义的宏.有这么几个,注意前后都是两个下划线 __FILE__ :表示源文件名称(不是可执行文件),字符串类型 __LINE__:源码行数,整形 __DATE__:编译日期,字符串 __TIME__:编译时间,字符串 一般都是在生成日志文件的时候用,常常还结合可变参数函数的使用.关于可变参数的问题,请看我另一篇文章C语言可变参数函数 比

常用的预定义的宏

常用的预定义的宏 常用的预定义的宏有:__LINE__ 当前源程序行的行号,用十进制整数常量表示 __FILE__ 当前源文件的名称,用字符串常量表示 __DATE__ 编译时的日期,用"MM dd yyyy"形式的字符串常量表示 __TIME__ 编译时的时间,用"hh:mm:ss"形式的字符串常量表示 __STDC__ 当且只当编译器遵循ISO标准时,它的值是十进制常量1 __STDC__VERSION__ 如果编译器遵循C99,则这个宏的值是199901L,其

Perl常用的预定义变量

Perl提供了大量的预定义变量,下面列举了常用的一些预定义变量: $_                  在执行输入和模式搜索操作时使用的默认空格变量 $.                  文件中最后处理的当前行号 [email protected]                  由最近一个eval()运算符提供的Perl语法报错信息 $!                  获取当前错误信息值,常用于die命令 $$                  正在执行脚本的Perl进程号 $PER

PHP预定义接口之 ArrayAccess

最近这段时间回家过年了,博客也没有更新,感觉少学习了好多东西,也错失了好多的学习机会,就像大家在春节抢红包时常说的一句话:一不留神错过了好几亿.废话少说,这篇博客给大家说说关于PHP预定义接口中常用到的重量级人物: ArrayAccess.大家也许会问,最基本.最常用的预定义接口有6个呢,为啥非得说这个.从日常的使用情况来看:这个出现的频率非常高,特别是在框架中,比如Laravel.Slim等都会用到,并且用得非常经典,让人佩服啊.从技术上说:说实话其他的我用的少啊!只是知道简单的用法,对他的理

php预定义常量&amp;变量

PHP中可以使用预定义常量获取PHP中的信息,常用的预定义常量如下表所示. 常量名 功能  _FILE_ 默认常量,PHP程序文件名 _LINE_ 默认常量,PHP程序行数  PHP_VERSION 内建常量,PHP程序的版本,如3.0.8_dev  PHP_OS 内建常量,执行PHP解析器的操作系统名称,如Windows TRUE 该常量是一个真值(true)  FALSE 该常量是一个假值(false)  NULL 一个null值   E_ERROR 该常量指到最近的错误处 E_WARNIN

C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__

一边情况下,C/C++编译器会内置几个宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号: __FILE__:在源文件中插入当前源文件名: __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间: __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1: __cplusplus:当编写C++

__FILE__,__LINE__

编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号: __FILE__:在源文件中插入当前源文件名: __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间: __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1: __cplusplus:当编写C

C/C++ __FILE__,__LINE__输出调试信息

在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下.所以,很多人会选择使用宏定义的方式来输出调试语句. 编译器内置宏,ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:    在源代码中插入当前源代码行号: __FILE__:  

__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )

[email protected]:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H        #define GLOBAL_H        #include <stdio.h>        int funca(void);        int funcb(void);#endif[email protected]:~/cpropram/2# cat funca.c //函数a#include "global.h"i