Mal*_*eev 5 c c++ c-preprocessor
我需要更换
GET("any_name")
Run Code Online (Sandbox Code Playgroud)
同
String str_any_name = getFunction("any_name");
Run Code Online (Sandbox Code Playgroud)
困难的部分是如何修剪引号.可能?有任何想法吗?
Mac*_*cke 26
怎么样:
#define UNSAFE_GET(X) String str_##X = getFunction(#X);
Run Code Online (Sandbox Code Playgroud)
或者,为了安全防范嵌套宏问题:
#define STRINGIFY2(x) #x
#define STRINGIFY(x) STRINGIFY2(x)
#define PASTE2(a, b) a##b
#define PASTE(a, b) PASTE2(a, b)
#define SAFE_GET(X) String PASTE(str_, X) = getFunction(STRINGIFY(X));
Run Code Online (Sandbox Code Playgroud)
用法:
SAFE_GET(foo)
Run Code Online (Sandbox Code Playgroud)
这是编译的内容:
String str_foo = getFunction("foo");
Run Code Online (Sandbox Code Playgroud)
关键点: