2016-12-19 104 views
0

使用龍捲風2.2.1 GNU在編譯器選項

在C/C++編譯器選項,我試圖定義字符串如下定義字符串: -DHELLO =「你好」,它不工作(這也對於-DHELLO = \「Hello \」和-DHELLO = \\「Hello \\」在其他平臺中失敗) 定義值-DVALUE = 12工作沒有問題。

有沒有人知道正確的方式來定義Tornado中的字符串?

+0

你試過了嗎?-DHELLO =「\」你好\「」' – Amadeus

+0

@Amadeus:你是不是指'-DHELLO =「\」hello \「」'? (換句話說,逃避內部引號) –

+0

它..「不起作用」?那是什麼意思? –

回答

0

這樣一個宏的問題是,它通常不是一個字符串(在C/C++的意義上),只是一個預處理符號。由於預處理器編號可以在C/C++中原樣使用,但是對於字符串符號,如果要將它們轉換爲C/C++字符串(除了添加轉義引號外),您需要「串化」它們。

所以,這應該工作(無需額外的轉義引號):

#define _STRINGIZE(x) #x 
#define STRINGIZE(x) _STRINGIZE(x) 

string s = STRINGIZE(HELLO) 

(注意雙擴張獲得的,而不是宏觀stringized,即「你好」的宏,名字本身,即「你好」)