是否可以查找定义typedef的位置?
我遇到了这个非常难以回避的问题,产生了以下编译器错误:
/usr/include/stdint.h: At global scope:
/usr/include/stdint.h:57: error: duplicate 'unsigned'
/usr/include/stdint.h:57: error: declaration does not declare anything
其中/usr/include/stdint.h:57
是:
typedef unsigned int uint32_t
我最初的想法是,其他东西正在定义uint32_t
,当stdint尝试重新定义它时,会抛出错误。但是我不知道如何追溯到调用这个typedef的位置,甚至不知道调用它时uint32_t的当前值是什么。
有什么想法吗?
答案 0 :(得分:1)
您可以获得预处理的输出(大多数编译器上的-E),它将为您提供所有标头的完整声明。在其中你可以grep uint32_t。这应该显示哪个标题是导致重复typedef的标题。