私は定数変数の値を変更しようとしています。はい、私は自分がしていることの矛盾を認識していますが、私の狂気への方法があります。
4dmと呼ばれるC /C ++に非常によく似た言語で書いているのがわかりますが、関数以外のコードは許可されていないため、プリプロセッサコマンドを使用してこれを克服しようとしています。その理由は、私がその言語の専門化の形を達成できるようにするためです。この最初のステップは、定数文字列を編集できるようにすることです。
これは別の言語ですが、プリプロセッサはCおよびC++コンパイラとまったく同じように動作します。
#define MY_STR "abc"
#define CONCAT(s) \
#define TEMP MY_STR \ // store MY_STR in TEMP_STR
#undef MY_STR \ // undefine MY_STR
#define MY_STR TEMP s // redefine MY_STR so it contains the old value plus the new one
CONCAT(def)
printf("%s\n", MY_STR); // should hopefully print out "abc def"
以下は文字列を連結する簡単な試みですが、MY_STR is not defined
これを修正する方法についてのアイデアを示すコンパイルエラーが発生しますか?
#define MY_STR abc
#define TEMP MY_STR
#undef MY_STR
#define MY_STR TEMP def
void test()
{
print(MY_STR);
}