我正在尝试更改常量变量值,是的,我知道我正在做的事情的矛盾,但是有一种方法可以解决我的疯狂。
你看我正在用一种非常类似于C /C++ 的语言编写,称为 4dm,但它不允许函数之外的任何代码,所以我试图通过使用预处理器命令来克服这个问题。原因是我可以在语言中实现某种形式的专业化。第一步涉及能够编辑常量字符串。
尽管这是一种不同的语言,但预处理器的运行方式与 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);
}