C 宏,用于前缀和后缀字符串



我正在尝试清理我的代码以着色字符串。以下是我必须将红色 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);
                    ^
                    ;

任何想法我的宏怎么了?

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

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

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

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

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

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

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

最新更新