我正在Atmel Studio 6中为AVR设备编写嵌入式C应用程序。我对“文件层次结构”并不擅长,但我一直在努力。另外,感谢您抽出宝贵时间来解决这个问题。
以下是违规文件的文件结构:
所以PLAYOP_FSM.C是一个调用低级函数的有限状态机。它需要调用的一些函数在BTN_INTERFACE.C中实现;在BTN_INTERFACE.H
中定义所以:PLAYOP_FSM.C和BTN_INTERFACE.C都需要包含头文件。当然,我设置了标题保护以避免多重定义。
然而,我仍然得到:
multiple definition of 'X'
其中'X'实际上是我的变量:u_yPos和u_xPos。
其他一个错误是:
first defined here
然后它将BTN_INTERFACE.O置于文件下。
以下是错误列表的快照:
到目前为止我做了什么
我检查确保我在头文件中没有“包含”,我没有意外地包含“.c”文件。我检查确保我没有在其他任何地方包含BTN_INTERFACE.H。
如果我带走
,我可以编译它#include BTN_INTERFACE.H
我的PLAYOP_FSM.C文件中的行。更重要的是,如果我这样做,编译器不会抱怨我在PLAYOP_FSM.C中进行的函数调用,因此当我对它们进行注释时不会抛出任何错误。
如果我注释掉BTN_INTERFACE.C包含行,那么正如预期的那样,我会收到有关“不知道什么是哑变量”的错误。