在头文件中声明的函数在主文件中不可访问

时间:2013-02-10 14:55:02

标签: c arduino undefined-reference

我的文件结构如下:

interface.h --> interface.c
      |
      |
effects.h --> effects.c
      |
      |
    main

但是,在main.h中无法访问effect.h中声明的函数。

代码段:

主要:

#include "interface.h"
#include "effects.h"
void setup()  //Initialize all variables here
{

....
turnoff();
};

effects.h:

#ifndef EFFECTS
#define EFFECTS
void turnoff();
#endif

effects.c:

#include "interface.h"
#include "effects.h"
void turnoff()
{
....
};

interface.h:

#ifndef INTERFACE
#define INTERFACE
....
#endif

错误讯息:In function ``loop':undefined reference to ``turnoff()'

由于循环功能为空,错误信息没有意义!

4 个答案:

答案 0 :(得分:1)

您需要将所有3个.c文件编译并链接在一起。使用gcc就像

一样简单

gcc main.c interface.c effects.c -o executable_name

答案 1 :(得分:1)

我认为IDE需要* .cpp文件而不是* .c文件。

无论如何,您应该更改file->偏好设置下的设置以获得详细的编译器输出。通常这会给出一些提示。至少它会显示包含 实际 编译的文件的临时目录。这反过来可以更准确地分析问题。

答案 2 :(得分:0)

从最新的回复中,我觉得effects.c不是编译的一部分。我不了解开发环境,但从现有数据来看,这是我的观察结果。

答案 3 :(得分:0)

您使用的是哪些标志? 也许你需要明确地将你的函数声明为extern?

extern void turnoff();