我正在努力清理我的代码,以便给字符串上色。下面是我必须在字符串前面加上红色的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")

10-08 13:21