Registro del programa de grabación en lenguaje C

Cuando escribimos un programa, es imposible escribirlo sin errores. Debemos modificarlo constantemente. Puede que no haya problemas después de depurarlo nosotros mismos. Después de enviarlo al cliente, todavía hay muchos problemas. En este momento, No es realista acudir al cliente para resolver el problema. Si no tiene que encontrar el problema usted mismo, la mejor manera es registrar el registro del programa en ejecución. Solo necesita descargar el archivo de registro del cliente. y puede localizar la ubicación aproximada del error, a fin de proporcionar soporte de datos para los cambios. Bien, dejemos de decir tonterías y vayamos directamente al código:

#include<stdio.h>

int main()
{
	FILE* pf = fopen("log.txt", "a+");
	if (pf == NULL)
	{
		perror("打开文件失败!");
		return 1;
	}

	int i = 0;
	for (i = 0; i < 1000; i++)
	{
		//  向日志文件中写入文件名,程序当前行号,当前日期,当前时间, 当前函数名和 变量i的值
		fprintf(pf, "文件名:%s  行号:%d   日期:%s  时间:%s  函数名:%s  i:%d  \n", __FILE__, __LINE__, __DATE__, __TIME__, __FUNCTION__, i);
	}


	fclose(pf);
	pf = NULL;
	return 0;
}

A continuación se muestra una captura de pantalla del archivo de registro una vez que el programa ha terminado de ejecutarse:

#

#defina el nombre de la variable actual nombre de la variable que se reemplazará

Utilice definir para cambiar algunos nombres particularmente largos por nombres particularmente cortos que sean fáciles de recordar y escribir.

#include<stdio.h>

#define CASE break;case
#define RZ printf("文件名:%s  行号:%d   日期:%s  时间:%s  函数名:%s  i:%d  \n", __FILE__, __LINE__, __DATE__, __TIME__, __FUNCTION__, i);


int main()
{
	int i = 0;
    RZ         //此处就会打印日志信息,上面difine所代替的那些代码
	switch (i)
	{
	case 1:
	CASE 2:   // 这里要用break;case代替,这样语法就正确了。
/*
	break;
	case 2:	
*/
	CASE 3:

	}
}

El uso del signo #. Usar el signo # en define reemplaza la cadena representada por el valor actual. Sin el signo #, reemplaza el valor de la cadena actual.

#include<stdio.h>

#define print(x) printf(" 当前 "#x" 的值是:%d \n",x)

int main()
{
	int a = 10;
	print(a);
	int b = 20;
	print(b);
	int c = 30;
	print(c);
	return 0;
}

Lo que se imprime arriba es un número entero cada vez. Si imprime un decimal, este método no es aplicable. Puede cambiarlo al siguiente diseño:

#include<stdio.h>

#define print(x) printf(" 当前 "#x" 的值是:%d \n",x)  
#define print(x, format) printf(" 当前 "#x" 的值是:" format" \n",x)  //把其中的%d 替换了

int main()
{
	int a = 10;
	print(a, "%d");
	int b = 20;
	print(b, "%d");
	int c = 30;
	print(c, "%d");

	//如果打印小数的话原来的%d就不适用了,需要换成%f
	float d = 3.14;
	print(d, "%f");
	return 0;
}

## Combinar identificadores para formar un nuevo identificador

#include<stdio.h>

#define HEBING(x,y,z) x##y##z    // 把xyz三个标识符合并成一个新的标识符

int main()
{
	int retab = 99;
	printf("%d", HEBING(ret, a, b));
}

Supongo que te gusta

Origin blog.csdn.net/xingyuncao520025/article/details/132645075
Recomendado
Clasificación