Cプリプロセッサを使用して、#define
'd intを#define
' d文字列に連結する方法を理解しようとしています。私のコンパイラはCentOS 5上のGCC 4.1です。このソリューションはMinGWでも機能するはずです。
文字列にバージョン番号を追加したいのですが、それを機能させる唯一の方法は、バージョン番号の定義を文字列としてコピーすることです。
私が見つけた最も近いものはマクロ引数を引用する方法でしたが、それは#define
s では機能しません
これは機能しません。
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
#
値が数値であり、に展開されるため、sがなければ機能しません。"/home/user/.myapp" 2 6
これは有効なCではありません。
これは機能しますが、バージョン定義のコピーを番号としても必要とするので、私はバージョン定義のコピーが好きではありません。
#define MAJOR_VER 2
#define MINOR_VER 6
#define MAJOR_VER_STR "2"
#define MINOR_VER_STR "6"
#define MY_FILE "/home/user/.myapp" MAJOR_VER_STRING MINOR_VER_STRING