2015-01-26 56 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" 

複製並粘貼到編輯請。

注意的是,你的代碼不正確突出。