KeilV5编译出错?万万没有想到是这个问题。明明已经在头文件中声明了函数或变量,但是,任然提示“函数已使用但未定义”。或者“ Error: L6218E: Undefined symbol xxxxx (referred from xxxx.o).”。

        如果你也出现上诉问题,你也可以尝试一下方式解决。

1,所使用的函数或者变量使用了static修饰。例如:

static void testfunc(void)

{

        xxxxxx

}

此时该函数或者变量仅限当前.c文件调用,解决办法是去掉static修饰。

2,头文件包含顺序。如果两个头文件的包含顺序存在相互依赖,编译也会出错。例如:

A头文件如下:

#ifndef A_H
#define A_H
#include "b.h"
// 其他内容
#endif // A_H

B头文件如下:

#ifndef B_H
#define B_H
#include "a.h"
// 其他内容
#endif // B_H

解决办法是调试包含关系避免相互包含的情况出现。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐