C语言提供了很多宏,今天学习的过程中见到了__FUNCTION__这个宏,顺便百度了一下其它常见的宏,这些都是编译器内置的宏。下面找了几个简单的例子。

__FUNCTION__:当前函数的名称
__FILE__:当前文件的名称
__DATE__:代码运行时的日期
 __TIME__:代码运行时的时间
 __LINE__:所在行数

参考代码:

#include <stdio.h>

void test()
{
        printf("Another function is: %s\n", __FUNCTION__);
}

int main()
{
        printf("The file is %s\n", __FILE__);
        printf("The date is %s\n", __DATE__);
        printf("The time is %s\n", __TIME__);
        printf("This line is %d\n", __LINE__);
        printf("This function is %s\n", __FUNCTION__);

        test();
        return 0;
}

运行结果:

The file is macro.c
The date is Mar 29 2022
The time is 17:15:26
This line is 13
This function is main
Another function is: test

标签智能推荐:

如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)

unctionname=%s\n",__FILE__,__FUNCTION__);}voidfun1_1(void){printf("filename:%s\tfunctionname=%s\n",__FILE__,__FUNCTION__);}voidfun1_2(void){printf("filename:%s\tfunctionname=%s\n",__FILE__,__FUNCTION_

C语言之预处理详解

来看一个例子:voidtest(){printf("FILE:%s\n",__FILE__);//所在的文件printf("LINE:%d\n",__LINE__);//所在的行printf("DATE:%s\n",__DATE__);//被编译的日期printf("TIME:%s\n",__TIME__);//被编译的时间printf("FUNCTION:%s\n",__FUNCTION__);

编译预处理笔记

ndef#ifdef#endif#ifndef:如果没有宏定义#ifdef:如果宏定义了通常用于头文件书写,防止头文件重复包含【4】打印错误信息#error无论是否有实际错误,#error命令都会让预处理器发出错误消息格式:​#error"错误文本信息"#ifndefTEST#error"22222222"#endif【5】辅助调试的宏__LINE__打印行号;__FUNCTION__打印函数名;

pyqt查看安装目录

importPyQt5print(PyQt5.__file__)

C++检测和定位内存泄漏

要宏定义一下new运算符#ifdef_DEBUG#definenewnew(_NORMAL_BLOCK,__FILE__,__LINE__)#endif//DEBUG解释:new(a,b,c)T;会被解释成一个函数调用operatornew(sizeof(T),a,b,c)。这是C++就有的行为operatornew,operatornew[],user-definedplacementalloc

编写合格的C代码(2):实现简易日志库

:每次打log需要手动传__FILE__和__LINE__未免效率低下,考虑到用宏封装。对于传入不定个数参数的宏,用...和__VA_ARGS__分别表示需要替代的不定个数参数、传给对应函数的不定个数参数;为了方便,将原来的nc_log函数重命名为nc_log_log函数,定义nc_log,nc_log_trace等宏:#definenc_log(level,...)nc_log_log(leve

断言函数的用法

打印输出文件名和行号else#defineEFM_ASSERT(expr)((void)0)//运行空命令行endif调试程序时宏定义好USE_FULL_ASSERT时,系统运行函数EFM_ASSERT(expr)时会自动运行命令EFM_ASSERT(expr)((expr)?((void)0):assertEFM(__FILE__,__LINE__))如果检测到expr为非真则运行,assert

不精确的取目录大小

ry-&gt;d_name)){19GetDirSize(entry_path,size);20}21}22*size+=statbuf.st_size;23}//while24}25else{26std::cout&lt;&lt;__FILE__&lt;&lt;"::"&lt;&lt;__LINE__&lt;&lt;"::"&lt;&lt;__FUNCTION__&lt;&lt;std::end

TICTOC: Header Only C++ Timer

方便调试,我们希望知道什么信息呢?这里列出来我比较关心的:这个时间戳所在的位置,包括:文件名,函数名时间戳是哪一段代码产生的,即:起始和结束的代码行号具体的时间(按不同精度显示)对于3,上文已经介绍了。那么如何获取文件名、函数名以及行号呢?其实C++中(C语言中也有的)早就给我们定义好了一些宏。这里就简单的列一下常用的几个,大家感兴趣也可以自己去查询:__FILE__:宏所在的文件名__FUNCT

python 查看所用模块所在路径

用&nbsp;模块名.__file__可查看到模块所在位置。例如:importtorchtorch.__file__