programas programa lenguaje funciones ejemplos comandos codigos basicos c++ build timestamp versioning

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.