我在这里对.c文件和.h文件有一些错误。您能帮我找到原因吗?

文件1.h

#ifndef FILE_H_1
#define FILE_H_1
u32 function_1(u32 data);
u32 function_2(u16 data);
#endif


文件2.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);
}


文件1.c

#include "file1.h"
u32 function_1 (u32 data) {
      return 2*data;
}
u32 function_2(u16 data) {
      return 3*data;
}


文件2.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数据,u16 reg)不兼容。尽管我在main.c中仅#include“ file1.h”。

请帮助我修复它。

谢谢。

最佳答案

C ++允许使用具有相同名称(具有不同参数)的函数,但C不允许。您只需修改其中一个函数名称即可消除错误。

关于c - 符号乘法定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31963738/

10-11 20:56