工具/软件:Code Composer Studio 12.
您好!
我的问题不是微控制器特定的、而是关于头文件、项目结构和我遇到的错误的通用编程问题。
到目前为止我已了解了有关结构的内容:头文件(.h)包含变量和函数的声明、源文件(.c)包含变量和函数的定义。 源文件包含头文件的内容、其中包含变量和函数的声明、它们在后面使用#include
。 由于各种源文件可能包含同一头文件、头文件包含以下代码以避免多个声明:
#ifndef SOMETHING
#define SOMETHING
// code
#endif
我正在尝试将 lwIP 库实现到我自己的项目中 (我知道该示例)。 我已将完整的 lwIP 文件夹复制到项目中。 在构建过程中、我收到多个这样的错误:
#10056 symbol "autoip_arp_reply" redefined: first defined in "./lwip/lwip-2.1.2/src/core/ipv4/autoip.obj"; redefined in "./lwip/utils/lwiplib.obj"
仅./lwip/lwip-2.1.2/src/core/ipv4/autoip.c
包含的定义autoip_arp_reply()
、但两个文件都包含./lwip/lwip-2.1.2/src/include/autoip.h
、其中包含的声明autoip_arp_reply()
。 和autoip.h
包含如上所示的结构以避免多个声明。 由于这些原因、我不理解该错误消息。 首先、它应该"重新声明"、而不是"重新定义"、甚至不应该发生这种情况、因为#ifndef
代码应该防止这种情况发生。
我的错误在哪里? 该错误会如何发生? 我想大致了解这一点、不仅是为了解决这一特定问题。 谢谢!