リビジョン文字列を出力する必要がある C++ プロジェクトがあります。リビジョン文字列は会社ごとに指定されており、プロトコルにはビルド時間が yyyy/mm/dd として含まれています。
私はこれをビルド システムからマクロとして指定していましたが、プリコンパイル済みヘッダーが台無しになるため (日が変わるとインクリメンタル ビルドで)、これはもはやオプションではありません。
コンパイラからビルド日を取得してこれを実装しようとしていますが__DATE__
、__TIMESTAMP__
月を Mmm で指定します。
月を数字として取る方法はありますか?
以下の回答に基づいて、私が終了したバージョンは次のとおりです。
#define __MONTH__ (\
__DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? "01" : "06") \
: __DATE__ [2] == 'b' ? "02" \
: __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? "03" : "04") \
: __DATE__ [2] == 'y' ? "05" \
: __DATE__ [2] == 'l' ? "07" \
: __DATE__ [2] == 'g' ? "08" \
: __DATE__ [2] == 'p' ? "09" \
: __DATE__ [2] == 't' ? "10" \
: __DATE__ [2] == 'v' ? "11" \
: "12")
...
std::string udate = __DATE__;
std::string date = udate.substr(7, 4) + "/" + __MONTH__ + "/" + udate.substr(4, 2);
boost::replace_all(date, " ", "0");
ありがとう