C预处理器:如何将宏的值与字符串连接起来

时间:2017-02-22 16:09:27

标签: c-preprocessor

我有一个宏定义:

#define MY_PREFIX prefix_

然后我希望定义具有连续的结果。我尝试了以下方法:

#define MY_NAME1 MY_PREFIXsuffix // Evaluates to 'MY_PREFIXsuffix'
#define MY_NAME2 MY_PREFIX ## suffix // Evaluates to 'MY_PREFIXsuffix'
#define MY_VAL(val) val // Intermediate macro
#define MY_NAME3 MY_VAL(MY_PREFIX)suffix // Evaluates to 'prefix_ suffix'
#define MY_NAME4 MY_VAL(MY_PREFIX) ## suffix // Evaluates to 'prefix_ suffix, preprocessor complains
#define CONCAT(a, b) a ## b 
#define MY_NAME5 CONCAT(MY_PREFIX, suffix) // Evaluates 'MY_PREFIXsuffix'

我认为这应该很简单。有什么想法吗?

所需的输出应该是MY_NAME评估为' prefix_suffix' (没有引号)

0 个答案:

没有答案