2015-01-26 90 views
0

我想清理我的代码,为着色字符串。以下是我必须将红色ANSI颜色前缀添加到字符串,然后用重置颜色后缀它。C宏为前缀和后缀字符串?

#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); 
        ^
        ; 

任何想法怎么了我的宏?

+0

嗯,这是尴尬的,我的朋友使用的是Mac,送我这个代码。我复制并粘贴了它,我们花了10-15分钟试图弄清楚它是怎么回事。 – 2015-01-26 23:59:29

+0

发送给你...在Word文档中? – 2015-01-27 00:00:08

+0

Skype,他们似乎也改变了整个格式化的东西,所以也许这就是原因。 – 2015-01-27 00:00:48

回答

3

您的宏在(,)中没有实时引号(")中的智能引号。

此外,作为良好实践的问题,放了支架一轮的定义,并x,例如:

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

什么是巧妙的语录,你怎么打字?我知道在LaTeX中,你只是使用''''一些文字''' – 2015-01-26 23:55:50

+0

啊,我的朋友给我发了这个片段,并且懒洋洋地复制了它。干杯! – 2015-01-26 23:56:47

+0

@iharob:聪明的引号是开引号和闭引号看起来不同的引号。 – abligh 2015-01-26 23:57:39

1

你似乎已经从一些地方复制的代码和双引号无效试试这个

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

复制并粘贴到编辑请。

注意的是,你的代码不正确突出。