我正在寫一個程序,它會從我的程序的最終用戶提供的位域標誌列表中,調用外部庫中的函數。我最初計劃維護所有可能標記的查找表,但標記列表因平臺而異,而且我沒有完整的庫文檔。我曾計劃使用c預處理器在表中包含當前平臺的已定義標誌,但這很難維護,因爲我不得不依賴用戶報告缺少的平臺標誌有訪問權。是否有可能檢查一個標誌是否沒有預定義的查找表而被定義,並只給出標誌名稱作爲字符串?
然後我想我可以允許用戶傳遞標誌名稱作爲字符串。但是我找不到一種方法來測試一個宏是否被定義,只給出該宏的字符串名稱。所以如果用戶想設置標誌FLAG_ABC,他們會傳入「FLAG_ABC」作爲參數,我必須做一些魔術來檢查& FLAG_ABC!= NULL。這可能嗎?
你可以發表一個你想要實現的例子嗎? – cnicutar
不是代碼示例,但請讓我知道我需要澄清哪些內容。 – cspotrun
所以我正確地說,如果你想在運行時檢查是否有#define-d? – Bart