我想用avr-gcc爲我的微控制器項目使用doxygen。
Doxygen工作正常,但我對變量有問題。使用帶有avr-gcc變量類型的doxygen
在avr-gcc中使用了doxygen無法識別的特殊變量類型。就像在這個例子中:
static uint8_t timeout; ///< timeout counter
static uint16_t bootcount; ///< boot counter
volatile uint8_t seconds; ///< system time seconds
volatile uint8_t minutes; ///< system time minutes
uint32_t EE_lifetime EEMEM = 0; ///< overall time in use
uint8_t EE_dummy EEMEM = 0xFF; ///< http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_eeprom_corruption.html
當我運行doxygen只有揮發性變量列出正確,所有其他全局變量被忽略。
EEPROM中的變量已經完全搞砸了,因爲在概覽中只列出了第一個變量,其餘的都沒有。
在詳細視圖中,只列出了EE_dummy,但帶有所有EEPROM變量的註釋。
變量類型在/usr/lib/avr/include/stdint.h
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdint.html
定義在的Doxyfile的設置應該是正確的:
SEARCH_INCLUDES = YES
ENABLE_PREPROCESSING = YES
我無法找出什麼錯了還是失蹤?
前一段時間,有一個類似的問題,這是沒有回答。
https://stackoverflow.com/questions/34796928/doxygen-uint8-t-and-other-stdint-h-inttypes-h-integer-types
關於靜態變量,檢查EXTRACT_STATIC的設置(我假設你也看到了靜態變量爲全局,你在你的代碼片段顯示它們) – albert
關於uint32t和uint8_t可變看到「uint32_t的EE_lifetime」和「uint8_t EE_dummy 「作爲變量EEMEM的類型,從而導致組合其文檔(並忽略第二種類型)的一個變量。 – albert
謝謝albert - EXTRACT_STATIC被設置爲NO。這是這個變量沒有記錄的原因。 EXTRACT_STATIC = YES,它們列出的是正確的。我認爲doxygen會根據上下文來提取全局變量,這對我來說並不明顯。 但類型EEMEM的變量的問題仍然存在。 我試圖將這個變量定義爲靜態 - 這被編譯器接受 - 但它們仍然是錯誤的。 – Karsten