programa - Incrustar marca de tiempo en el código objeto en tiempo de compilación con C++
lenguaje c++ ejemplos (7)
Quiero realizar una printf()
para mostrar cuando se compiló por última vez el código que se está ejecutando actualmente. ¿Proporciona C / C ++ una macro que le da una resolución a una marca de tiempo durante la compilación?
16.8 Nombres de macro predefinidos [cpp.predefined]
1 Los siguientes nombres de macros serán definidos por la implementación:
__LINE__
El número de línea de la línea fuente actual (una constante decimal).
__FILE__
El nombre presunto del archivo de origen (un literal de cadena de caracteres).
__DATE__
La fecha de traducción del archivo fuente (un literal de cadena de caracteres de la forma "Mmm dd aaaa", donde los nombres de los meses son los mismos que los generados por la función asctime, y el primer carácter de dd es un carácter de espacio si el valor es menor que 10). Si la fecha de traducción no está disponible, se proporciona una fecha válida definida por la implementación.
__TIME__
El tiempo de traducción del archivo fuente (un literal de cadena de caracteres de la forma "hh: mm: ss" como en el tiempo generado por la función asctime). Si el tiempo de traducción no está disponible, se proporciona un tiempo válido definido por la implementación.
__STDC__
Si__STDC__
está predefinido y, de ser así, cuál es su valor, está definido por la implementación.
__cplusplus
El nombre__cplusplus
se define con el valor 199711L al compilar una unidad de traducción C ++.
Desea __TIME__
y posiblemente __DATE__
.
Estoy usando esto para enviar un mensaje a DbgView:
OutputDebugStringA(("ATTACHED VERSION: "+ string(__DATE__) + " " + string(__TIME__)).c_str());
Parece que los compiladores deben proporcionar una macro __TIMESTAMP__
, que debería funcionar para sus propósitos.
Puede usar __DATE__
y __TIME__
.
Si está utilizando el preprocesador gcc, encontrará lo que está buscando en las macros __TIME__
y __DATE__
Cita del procesador GNU C doc
__DATE__
Esta macro se expande a una constante de cadena que describe la fecha en la que se está ejecutando el preprocesador. La constante de cadena contiene once caracteres y se ve como "12 de febrero de 1996". Si el día del mes es menor a 10, está acolchado con un espacio a la izquierda.
__TIME__
Esta macro se expande a una constante de cadena que describe la hora a la que se está ejecutando el preprocesador. La constante de cadena contiene ocho caracteres y se ve como "23:59:01".
Use las macros __DATE__
y __TIME__
Use una secuencia de comandos o cree una aplicación para generar un archivo fuente en C ++ que contenga la fecha y hora de compilación. Agregue este archivo a la configuración de compilación. Las otras partes del programa pueden hacer referencia a los datos en este archivo.
Esta técnica también es útil para incrustar un número de versión en el programa. El proceso de compilación puede controlar el número de versión.