Arduino C:对`readArms()'的未定义引用

时间:2013-10-28 12:37:23

标签: c function arduino

在编译一些Arduino C文件时,我收到错误“未定义引用`readArms()'”

代码可以在paste bin找到。

但基本上会发生什么:

在INO文件中我使用:

readArms();

在“armfunctions.h”和“armfunctions.c”中宣布了

.h文件包含

void readArms(void);

和.c文件:

void readArms(void){
    float motor1 = 0.0;
    int motor = 0;
    motor = analogRead(READMOTOR1);
    motor1 = (float)motor;
    motor1 = (motor1 - 87.0) * (400.0/(1007.0-87.0));
    delay(1000);
}

2 个答案:

答案 0 :(得分:28)

我今天已经研究了几个小时,制作和测试各种草图,并且发现(正如您已经发现的)将它们更改为.cpp是一种解决方法,但是如果您想要专门创建ac文件,您必须将原型包装在标头中以使其进行编译。有一些关于它的好帖子,但问题的关键在于.h文件中:

#ifdef __cplusplus
extern "C" {
#endif

void readArms(void);

#ifdef __cplusplus
}
#endif

答案 1 :(得分:-2)

您应该在.C文件中使用以下内容:

void armfunctions :: readArms(void)...(::。前面的部分是.h文件中的类名)