C宏为字符串添加前缀和后缀?

C Macro to prefix and suffix a string?

我正在尝试清理我的字符串着色代码。这是我必须为字符串添加红色 ANSI 颜色前缀,然后使用重置颜色作为后缀。

#define GET_RED_TEXT(x) “\x1B[31m” x “\x1B[00m”

然而,当我尝试使用它时...

src/util.c:18:15: error: expected expression
        char *temp = GET_RED_TEXT("error: ");
                     ^
includes/util.h:14:25: note: expanded from macro 'GET_RED_TEXT'
#define GET_RED_TEXT(x) “\x1B[31m” x “\x1B[00m”
                        ^
src/util.c:22:14: error: expected ';' at end of declaration
        va_end(arg);
                    ^
                    ;

我的宏有什么问题吗?

您似乎从某个地方复制了代码,但双引号无效试试这个

#define GET_RED_TEXT(x) "\x1B[31m" x "\x1B[00m"

请复制并粘贴到编辑器中。

请注意,您的代码未正确突出显示。

您的宏在 () 中包含智能引号,而不是真正的引号 (")。

此外,作为一种良好做法,在定义两边加上括号,并且 x,例如:

#define GET_RED_TEXT(x) ("\x1B[31m" (x) "\x1B[00m")