如何在MACRO中添加L前缀

1 c c-preprocessor

我有

#define STRING "string"
Run Code Online (Sandbox Code Playgroud)

我想稍后在我的代码中将L前缀添加到STRING宏中(我不能在定义中这样做)。怎么做?

alk*_*alk 5

应该这样做:

#include <stdio.h>


#define CONCATENATE(e1, e2) e1 ## e2
#define PREFIX_L(s) CONCATENATE(L, s)

#define STRING "string"

int main(void)
{
    printf("%ls\n", PREFIX_L(STRING));
}
Run Code Online (Sandbox Code Playgroud)

这些标准C预处理程序的串联功能也包含在GCC随附的文档中:https : //gcc.gnu.org/onlinedocs/cpp/Concatenation.html