Tengo algún código que está construido tanto en Windows como en Linux. Linux en este punto siempre es de 32 bits, pero Windows tiene 32 y 64 bits. Windows quiere tener time_t ser de 64 bits y Linux todavía lo tiene como 32 bit. Estoy de acuerdo con eso, excepto en algunos lugares los valores de time_t se convierten en cadenas. Entonces, cuando time_T es de 32 bits, debe hacerse con% d y cuando es de 64 bits con% lld ... ¿cuál es la forma inteligente de hacerlo? Además: ¿alguna idea de cómo puedo encontrar todos los lugares donde time_t se pasa a las funciones de estilo printf para abordar este problema?manera portátil de lidiar con 64/32 bit time_t
edición: me ocurrió declarar TT_FMT como "% d" o "% LLD" y luego cambiar mis printfs como en printf ("tiempo:% d, regístrese: bla") para ser printf ("tiempo : "TT_FMT", registra: blah ") ¿Hay una manera mejor? ¿Y cómo los encuentro a todos?
En realidad, creo que desea utilizar especificadores de formato sin firmar. –
Tim, está firmado tanto en Linux como en Windows (ver http://stackoverflow.com/questions/471248/what-is-ultimately-a-time-t-typedef-to). De lo contrario, no podría representar toda la vida de Dennis Ritchie. ;) (http://en.wikipedia.org/wiki/Unix_time#Representing_the_number) –
En realidad, time_t también tiene 64 bits de ancho en glibcs contemporáneos para Linux x86_64. – user562374