Wie kann ich einen __TIMESTAMP__
Ersatz in ISO 8601: 2004 haben?
__TIMESTAMP__
vs
__TIMESTAMP_ISO__
Oh ihr Optimist! Sie würden nicht wirklich erwarten, dass ein Standard einem anderen Aufmerksamkeit schenkt, oder? Die __TIMESTAMP__
-Definition befindet sich nicht in Standard C, nur so, wie Sie wissen. Es wäre großartig, ein Format wie das von Ihnen vorgeschlagene __TIMESTAMP_ISO__
zu haben (würden Sie immer Zulu-Zeit haben wollen, oder wäre es besser, die lokale Zeitzone zu vertauschen?), Aber ehrlich gesagt, könnte der einfachste Weg, es hinzuzufügen, ein sein Patch zu GCC und Clang und so weiter.
Sie können versuchen, mit asctime()
zu monkeyen, wie von user1034749 empfohlen. answer , aber ich würde es lieber nicht versuchen.
Im GCC 4.8.1 Handbuch gibt es eine interessante Warnunterdrückung:
-Wno-builtin-macro-redefined
Warnen Sie nicht, wenn bestimmte integrierte Makros neu definiert werden. Dies unterdrückt Warnungen für die Neudefinition von__TIMESTAMP__
,__TIME__
,__DATE__
,__FILE__
und__BASE_FILE__
.
Dies deutet darauf hin, dass Sie versuchen könnten:
%Vor% (Beachten Sie die Hieroglyphen, die erforderlich sind, um die Zeichenfolge date
in doppelte Anführungszeichen zu setzen.) Einige frühere Versionen von GCC unterstützen diese Option jedoch nicht. Ich kann mich nicht erinnern, es vorher gesehen zu haben. Sie können __TIMESTAMP__
noch immer neu definieren:
Nicht sehr hübsch, aber es funktioniert ... Oh, und nur für den Rekord war der Quellcode (trivial):
%Vor%Wenn Sie einen wirklich plattformübergreifenden Weg brauchen, um die Kompilierungszeitstempel-Zeichenfolge in ISO 8601 oder einem anderen zur Kompilierungszeit definierten Format zu erstellen, können Sie stattdessen die Verwendung von CMake (was immer in Erwägung zu ziehen ist).
Was Sie wollen können Sie einfach mit CMake erreichen .
Tags und Links c gcc clang icc c-preprocessor