我試圖創建一個bash腳本,將改變以下的值I輸入到命令行的值:如何重新定義#defined值?
#ifndef SIZE
#define SIZE 10
#endif
有沒有什麼辦法可以改變大小的值?
我試圖創建一個bash腳本,將改變以下的值I輸入到命令行的值:如何重新定義#defined值?
#ifndef SIZE
#define SIZE 10
#endif
有沒有什麼辦法可以改變大小的值?
如果您在編譯程序時將-DSIZE=30
傳遞給GCC,那麼SIZE
將從一開始就被定義爲30
。然後,由於問題中顯示的代碼檢查它是否已被定義,因此不會將其定義爲10
。
你想用'sed'改變源代碼?它與C有關嗎?你不想通過'-DSIZE = 30'來使用編譯開關來改變它嗎? –
據我所知,你想在運行時將'SIZE'的值從10改爲20?如果是的話,答案是否定的。預編譯器命令(其中'#define是一個)在編譯過程的早期處理。 '#define'會發生什麼情況,即使在解析代碼之前,字符串「SIZE」的每一處出現都被替換爲10。你可以做的是有一個默認初始化爲10的變量(比如'size'),然後處理命令行參數並根據需要修改變量。 – thurizas
這樣做的最好方法是將所有這些常量放在單獨的標題中,然後根據需要編輯/生成這些標題。使用GCC功能來生成預處理器常量是一個壞主意,爭取可移植性和標準C. – Lundin