C宏前缀和后缀字符串?

时间:2015-01-26 23:51:27

标签: c colors macros c-preprocessor

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

我的宏观有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

另外,作为一种良好做法,在定义上加上一个括号,x,例如:

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

答案 1 :(得分:1)

您似乎已从某个地方复制了代码,双引号无效,请尝试此

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

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

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