質問

#define VERSION 1U

#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)

#define VERSION_STRING VALUE_TO_STRING(VERSION)

char readMe[] = "The current version of this document is " VERSION_STRING ".";
.

...

初期化時に作成されるグローバル文字列(Readme)が必要なコードのこの部分を持っています。 上記のコードの出力は - >この文書の現在のバージョンが1Uです。 だから私が欲しいのはその「u」を取り除くことです。 プリプロセッサ関数でこれを修正する機会がありますか?(符号なし定義値を符号付き定義値に変換する...)?

役に立ちましたか?

解決

UからVERSIONを取り出す前のプロセッサメソッドがあるとは思わない。ただし、それらを組み合わせることができます。私は提案するでしょう:

#define UNSIGNED_VERSION 1

#define VERSION UNSIGNED_VERSION ## U

#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)

#define VERSION_STRING VALUE_TO_STRING(UNSIGNED_VERSION)

char readMe[] = "The current version of this document is " VERSION_STRING ".";
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top