符号なし定義変数を符号付き定義変数で変換する方法
-
21-12-2019 - |
質問
#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 ".";
. 所属していません StackOverflow