2014-10-31 59 views
2

假設我有這樣的代碼:在編譯命令中指定另一個替換的#define×宏值

#include<stdio.h> 

#ifndef STR 
    #define STR "HELLO" 
#endif 

int main() 
{ 
    printf(STR "WORLD \n"); 
    return 0; 
} 

這基本上轉化爲:如果str沒有定義,那麼把它定義爲「HELLO」, 所以程序的輸出將是

HELLO WORLD

現在,我的問題是:我怎麼能使用gcc編譯時修改這個值STR ? 例如,我想將「HELLO」更改爲「HI」,而不更改源(program.c)文件中的任何內容。

這樣做的gcc語法是什麼?

我已經試過

的gcc -Wall program.c -DSTR = 「HI」 -o程序

但它並沒有產生預期的輸出。

有什麼建議嗎?

謝謝!

+1

嘗試'GCC -Wall program.c -DSTR = \ 「HI \」 -o year' – BLUEPIXY 2014-10-31 09:17:28

+0

@BLUEPIXY,這是一個答案 – 2014-10-31 09:19:10

+1

@BLUEPIXY:那些反斜槓是問題,現在它就像一個魅力!非常感謝! – Alex 2014-10-31 09:19:39

回答

1

嘗試的形式:

-DSTR=\"MyString\" 
+0

可能值得一提的是,這是一個shell問題。如果該命令是'exec *()'編輯,例如反斜槓將不是必需的。 – alk 2014-10-31 12:50:58