3
我在我的程序中很多次打電話CURRENT_DIR
(見下文)。就像程序運行時可執行文件的路徑不會改變一樣,每當我調用這個函數時都沒有意義再次定義它。如何在一個只能定義一次的函數或宏函數中創建一個變量?
所以,我正在尋找一個解決方案,一旦這個值已經設置,它不應該再次設置。
我目前的解決方案是:將一個靜態變量的所有值設置爲0,並在if語句測試中檢查第一個字符是否爲非null,如果爲true,則設置它。但它看起來像一個不雅的..也許有一個更好的解決方案..通過使用包括宏的一些模型,我不知道。任何幫助和differents解決方案非常讚賞。我希望你明白這一點。提前致謝。
看到代碼:
#define CURRENT_DIR ({ \
static char buffer[MAX_PATH + 1] = { 0 }; \
if(buffer[0] != '\0') \
getcurrentdir(buffer, MAX_PATH); \
buffer; \
})
我應該添加「GCC」標籤,因爲這顯然是特定於GCC? (即表達陳述) – Mysticial 2012-07-14 03:51:13
@Mysticial:我的錯誤。抱歉。編輯。 – Jack 2012-07-14 03:52:09
不需要道歉。更多標籤增加了問題的可見性。 – Mysticial 2012-07-14 03:54:02