0

我有一个文件结构如下:

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

然而,在 effects.h 中声明的函数在 main 中是不可访问的。

代码片段:

主要的 :

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

....
turnoff();
};

效果.h:

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

效果.c:

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

接口.h:

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

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

错误消息没有意义,因为循环函数为空!

4

4 回答 4

1

您需要将所有 3 个 .c 文件编译并链接在一起。就gcc这么简单

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

于 2013-02-10T15:03:55.240 回答
1

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

无论如何,您应该更改 file->preferences 下的设置以获得详细的编译器输出。通常这会给出一些提示。至少它向您显示了包含实际编译的文件的临时目录。这反过来又允许对问题进行更精确的分析。

于 2013-02-10T19:08:33.280 回答
0

what are the flags you are using? maybe you need to declare your functions as extern explicitly?

extern void turnoff();
于 2013-02-10T16:07:45.927 回答
0

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

于 2013-02-10T15:25:23.100 回答