Arduino& C:将函数和全局变量放在外部文件中

时间:2013-05-12 18:08:23

标签: c include arduino header-files

这应该是一个简单的问题。我正在尝试将代码拆分为草图中的两个文件:

test.ino:

void setup(){}
void loop(){ fn(); }

test.c的:

char myChar = '?';
void fn(){ myChar++; }

我尝试过使用带有各种配置的test.h文件,例如使用以下行:

  • extern char myChar;
  • char myChar;
  • void fn();
  • extern void fn();

包括test.c和test.h文件在不同文件中的各种组合,但我总是得到一个编译器错误或其他,例如:

  

test.cpp.o :(。data.myChar + 0x0):`myChar'的多重定义

     

test.c.o :(。data.myChar + 0x0):首先在这里定义

或者

  

test.cpp.o:在函数`setup'中:

     

C:\ Program Files \ arduino-1.0.4 / test.ino:4:未定义对`fn()'的引用

我真的用这个把头发拉了出来。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

Arduino IDE真正适合初学程序员。随着您变得更好,您可能希望转而使用更传统的编程工具。

Arduino项目实际上只是c / c ++应用程序。在这方面,您拥有整个c / c ++社区。他们最喜爱和最受鄙视的工具之一叫做make。您可以使用它部署和构建项目。这是一个很好的起点。 http://ed.am/dev/make/arduino-mk/arduino.mk

答案 1 :(得分:1)

首先应该尝试理解变量的声明和定义之间的区别。幸运的是,这已经在stackoverflow herehere进行了讨论。

重点是将所有声明放入头文件(.h),将所有定义放入实现文件(.c)。最后一步是确保标题只包含一次。这是通过所谓的包括防护来实现的。详细信息在stackoverflow herehere上已经知道。