Linux下__LINE__用法(C语言)

ANSI C标准中有几个标准预定义宏,其中 __ LINE __ 表示在源代码中插入当前源代码行号,通过如下代码可以__LINE__在程序中行号输出情况:

#include 

#define PRINTF3(str) debug_printf(__LINE__,str)

void debug_printf(int line,char* str)
{
	printf("debug_printf Line and str is %d,%s\n",line,str);

    return;
}
    
int PRINT2(int line)
{
	printf("PRINT2: %d\n", line);
	return 0;
}

int PRINT1()
{
	printf("PRINT1: %d\n", __LINE__);
	return 0;
}

int main(void) 
{
	printf("printf: %d\n", __LINE__);
	(void)PRINT1();						//打印在调用函数中__LINE__出现位置行号
	(void)PRINT2(__LINE__);				//打印该子函数位置行号
	(void)PRINTF3("PRINTF3 Line");		//打印调用该宏定义函数的行号
	
	return 0;
}

运行结果:
Linux下__LINE__用法(C语言)_第1张图片
小结一下,就是__LINE__作为形参则打印子函数的那行位置的行号,若在调用函数中则打印在调用函数中__LINE__位置行号,使用宏定义函数则先替换成宏定义函数然后找LINE所在位置行号( 替换后,__LINE__在哪行,则打印哪行行数)。

以上。

你可能感兴趣的:(C编程,Linux)