我在.c文件和.h文件中有一些错误。能帮我找到原因吗。
file1.h
#ifndef FILE_H_1
#define FILE_H_1
u32 function_1(u32 data);
u32 function_2(u16 data);
#endif
file2.h
#ifndef FILE_H_2
#define FILE_H_2
u32 function_1(u32 data);
u32 function_3(u16 data, u16 reg);
#endif
的main.c
#include "file1.h"
static u32 function_3 (u32 data)
{
//do something;
}
void main() {
u32 m = function_1(0);
}
file1.c中
#include "file1.h"
u32 function_1 (u32 data) {
return 2*data;
}
u32 function_2(u16 data) {
return 3*data;
}
file2.c中
#include "file2.h"
u32 function_1(u32 data){
return data;
}
u32 function_3(u16 data,u16 reg){
return 5*data + reg;
}
它编译好,但它有错误链接器。 问题是" u32 function_3(u16数据)与u32 function_3(u16 data,u16 reg)不兼容。虽然我只#include" file1.h"在main.c。
请帮我解决。
谢谢。
答案 0 :(得分:-1)
在大量修复您提供的示例(查看编辑)后,我遇到以下错误:
function_1
定义了两次。
我无法重现您遇到的错误。
也许我是以非预期的方式编辑了你的例子。请更改它,以便发生您遇到的错误。
答案 1 :(得分:-1)
C ++允许具有相同名称(具有不同参数)的函数,但C不允许。您可以通过修改其中一个函数名来消除错误。