我想用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