2012-02-26 95 views
1

我提前道歉,如果這之前已經問過,但我一直沒能找到有關,所以,只要它涉及專門這一點。如何在C中打印定義的字符串宏?

基本上,假設我有一個簡單的宏:

#define STR "somestring"

當我這樣做對宏printfputs,我得到一個

error: expected ')' before ';' token 

它的字面意思一樣簡單:

int main(int argc, char** argv) 
{ 

    puts(STR); //error 

    return 0; 
} 

Is th有可能嗎?如果是這樣,怎麼樣?

+1

它工作正常結束:http://ideone.com/jN8nQ 。問題必須存在於其他地方。 – 2012-02-26 18:00:50

+2

難道你有'#define STR「somestring」;'? – cnicutar 2012-02-26 18:01:03

+1

(我打賭在';'後確定) – Mat 2012-02-26 18:01:22

回答

2

的問題是最有可能的是STR在程序中的某一點重新定義。下面的代碼編譯得很好。

#define STR "something" 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    puts(STR); 
    return 0; 
} 

作爲一個實驗嘗試選擇一個不同的名字,說STR_TEST,看看是否可行。如果是這樣,那麼你知道宏別處定義

錯誤的另一個可能來源就是#define線在;(它不應該)

+0

它確實以';'結尾。檢查問題文章的評論。 – zeboidlund 2012-02-26 18:34:54