#define STR1 "s"
#define STR2 "1"
#define STR3 STR1 ## STR2
是否有可能将STR 3==“S1”连接起来?
发布于 2018-02-08 09:37:54
如果它们都是字符串,可以这样做:
#define STR3 STR1 STR2
预处理器自动连接相邻的字符串。
发布于 2018-02-08 10:45:28
尝试如下:
/*
* Concatenate preprocessor tokens A and B without expanding macro definitions
* (however, if invoked from a macro, macro arguments are expanded).
*/
#define PPCAT_NX(A, B) A ## B
/*
* Concatenate preprocessor tokens A and B after macro-expanding them.
*/
#define PPCAT(A, B) PPCAT_NX(A, B)
宏:
/*
* Turn A into a string literal without expanding macro definitions
* (however, if invoked from a macro, macro arguments are expanded).
*/
#define STRINGIZE_NX(A) #A
/*
* Turn A into a string literal after macro-expanding it.
*/
#define STRINGIZE(A) STRINGIZE_NX(A)
然后,
#define T1 s
#define T2 1
STRINGIZE(PPCAT(T1, T2)) // produces "s1"
https://stackoverflow.com/questions/-100003478
复制相似问题