[C / C ++] Obtener tiempo de compilación en lenguaje C | Programación de tiempo de compilación de impresión

Imprimir fecha y hora de compilación del firmware
printf ("Tiempo de compilación del firmware:% s% s \ n", __DATE__, __TIME__);
result

Tiempo de compilación del firmware: 11 de febrero de 2020 19:41:48
1 El
método de implementación es utilizar macros predefinidas en lenguaje C.
El estándar ANSIC define macros predefinidas que se pueden usar en lenguaje C:
1. __ LINE__: inserta el número de línea del código fuente actual
en el código fuente 2. __ FILE __: inserta el nombre del archivo del código fuente actual en el código fuente
3. __ FECHA __: Inserte la fecha de compilación actual en el código fuente (tenga en cuenta que se distingue de la fecha del sistema actual)
4. __ HORA __: Inserte la hora de compilación actual en el código fuente (tenga en cuenta que se distingue de la hora actual del sistema )

Los identificadores __LINE__ y __FILE__ generalmente se usan para depurar programas; los
identificadores __DATE__ y __TIME__ generalmente se usan para agregar una marca de tiempo al programa compilado para distinguir diferentes versiones del programa;
estos cuatro son macro precompiladas, no incluidas en el encabezado archivo
__FILE__ es el nombre del archivo compilado actualmente es una cadena
__TIME__ es el formato de tiempo de compilación del archivo compilado actualmente es hh: mm: ss es la cadena
__DATE__ es la compilación actual El formato de la fecha de compilación del archivo es Mmm : dd: yyyy, la cadena
__LINE__ es el número de líneas donde se llama a la instrucción macro, y es un número decimal.

Enlace original: https://blog.csdn.net/toopoo/article/details/104269471

void Get_Compile_Date_Base(uint8_t *Year, uint8_t *Month, uint8_t *Day)
{
	const char *pMonth[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
	const char Date[12] = __DATE__;//取编译时间
	uint8_t i;
	for(i = 0; i < 12; i++)if(memcmp(Date, pMonth[i], 3) == 0)*Month = i + 1, i = 12;
	*Year = (uint8_t)atoi(Date + 9); //Date[9]为2位年份,Date[7]为完整年份
	*Day = (uint8_t)atoi(Date + 4);
}
char g_date_buf[10];
char* Get_Compile_Date(void)
{
	uint8_t  Year, Month, Day;
	Get_Compile_Date_Base(&Year, &Month, &Day);//取编译时间
	sprintf(g_date_buf, "%02d%02d%02d", Year, Month, Day);//任意格式化
	return g_date_buf;
}

https://blog.csdn.net/zhuohui307317684/article/details/106689835

Supongo que te gusta

Origin blog.csdn.net/bandaoyu/article/details/114704021
Recomendado
Clasificación