Solo per curiosità mi chiedo se il valore fornito dalla macro standard del preprocessore __TIME__
possa cambiare all'interno di una singola unità di traduzione?La macro del preprocessore __TIME__ è garantita come costante all'interno di un file?
In altre parole, è __TIME__
determinato una volta durante la pre-elaborazione e quindi risolto, o viene rivalutato ogni volta che viene rilevato?
Se questo non è specificato dallo standard C, esiste un comportamento standard di fatto tra le principali implementazioni (gnu, clang, intel, msvc)?
Vedere 6.10.8.1p1 Molto probabilmente significa quando il pre-elaborazione _startanti_. Qualsiasi altra cosa sarebbe abbastanza inutile. – Olaf
Penso che la versione corrente di GNU CPP stabilisca valori per '_TIME__' e' __DATE__' allo stesso tempo, al momento in cui la prima macro viene espansa. Non sono sicuro al 100%, ma l'ambito di un particolare insieme di valori per queste macro sembra essere assegnato mentre le opzioni della riga di comando sono analizzate, quindi essenzialmente una volta per invocazione. La fonte GCC è notoriamente contorta. – NovaDenizen
@NovaDenizen un bisogno di simultaneità di '__DATE__' e' __TIME__' è un punto eccellente! Immagina se questi 2 non fossero impostati nello stesso istante. Altrimenti con un '__TIME__' di' 00: 00: 00' il '__DATE__' potrebbe essere ieri o oggi. L'unica sana funzionalità è un'impostazione unica di entrambi i valori. – chux