符号乘法定义

时间:2015-08-12 11:20:44

标签: c

我在.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。

请帮我解决。

谢谢。

2 个答案:

答案 0 :(得分:-1)

在大量修复您提供的示例(查看编辑)后,我遇到以下错误:

function_1定义了两次。

我无法重现您遇到的错误。

也许我是以非预期的方式编辑了你的例子。请更改它,以便发生您遇到的错误。

答案 1 :(得分:-1)

C ++允许具有相同名称(具有不同参数)的函数,但C不允许。您可以通过修改其中一个函数名来消除错误。