C语言打印当前所在函数名、文件名、行号 printf("[%s %s] %s: %s: %d\n", \ __DATE__, __TIME__, __FILE__, __func__, __LINE__); 内核驱动中: #ifdefMY_DEBUGprintk("[%s] %s: %d\n", \ __FILE__, __FUNCTION__, __LINE__);#endif 说明:...
intcount =1;classCBase{public:CBase(){//打印当前行所在文件、行号、函数,以及其它信息。TRACE_CMH_2("BASE: [%d]\n", count++);}};classCSub:publicCBase{public:CSub(){//打印当前行所在文件、行号、函数,以及其它信息。TRACE_CMH_1("SUB: [%d]\n", count++);}};intmain(intargc,char**arg...
1) __VA_ARGS__ 是一个可变参数的宏,总体来说就是将左边宏中 ... 的内容原样抄写在右边 __VA_ARGS__ 所在的位置。 2) __FILE__ 宏在预编译时会替换成当前的源文件名 3) __LINE__ 宏在预编译时会替换成当前的行号 4) __FUNCTION__ 宏在预编译时会替换成当前的函数名称 5)类似的宏还有__DATE...
这时候我们可以使用宏定义来封装一个宏打印函数,这个宏打印函数可以显示打印信息所在的文件、行数、函数名等信息。如: #define DBG_PRINTF(fmt, args...) \ {\ printf("<<File:%s Line:%d Function:%s>> ", __FILE__, __LINE__, __FUNCTION__);\ printf(fmt, ##args);\ } 使用范例: 可见,使用...
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:printf("%s%d",__FILE__,__LINE__);。3、编译器运行test.cpp文件,此时成功打印了源文件的名字和代码行数。
DebugPrintf("当前所在行号:%d\r\n", __LINE__); DebugPrintf("当前源文件名称:%s\r\n", __FILE__); DebugPrintf("当前固件编译日期:%s\r\n", __DATE__); DebugPrintf("当前固件编译时间:%s\r\n", __TIME__); return 0; } 四、STM32单片机上封装printf函数 ...
void printStar();int main(){ int a, b;printf("请输入你要的行数和列数:");scanf("%d %d", &a, &b);printStar(a,b);return 0;} void printStar(int r, int c){ int i, j;for(i =0 ; i< r; i++){ for(j = 0; j<c; j++){ printf("*");} printf("\n");}...
程序输出结果为: 预定义宏常用于程序运行异常的跟踪,__FILE__,__LINE__,__FUNCTION__这是最常用的组合,表示文件名、行数和函数名。除了以上提到的这五个预定义宏之外,还有C99标准提出的预定义宏如:__STDC_HOSTED__等,有兴趣的可以查一下。
查看当前栈层的信息,你可以用以下GDB命令: frame 或 f 会打印出这些信息:栈的层编号,当前的函数名,函数参数值,函数所在文件及行号,函数执行到的语句。 info frame info f 这个命令会打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内内地址。比如:函数地址,调用函数的地址,被调用函数的地址,目前的...
当一 个程序开始运行时.有三个缓冲文件自动打开, 它们是标准输入,标准输出,标准错误输出.缺 省对,标准输入,标准输出和标准错误输出文件都 是用户拄铷台(即终端).标准辅助和标准打印通 常分别代表—个辅助端口恕打印机.c中的士rc pe:l函数可以将上述五个预先定义的缓冲文件重新 进行定义 注意;在MS-DOS命令级,...