C 符号乘法定义

C 符号乘法定义,c,C,我这里的.c文件和.h文件有一些错误。你能帮我找到原因吗 文件1.h 文件2.h main.c 文件1.c 文件2.c 它可以编译,但它有错误链接器。 问题是u32函数_3u16数据与u32函数_3u16数据、u16 reg不兼容。虽然我只在main.c中包含file1.h 请帮我修一下 谢谢。在对提供的示例进行了大量修复后,请查看我遇到的以下错误: 函数_1定义了两次 我无法重现你所经历的错误 也许我无意中编辑了你的例子。请更改它,以便发生您遇到的错误。C++允许使用不同参数的同名函数,但C不

我这里的.c文件和.h文件有一些错误。你能帮我找到原因吗

文件1.h

文件2.h

main.c

文件1.c

文件2.c

它可以编译,但它有错误链接器。 问题是u32函数_3u16数据与u32函数_3u16数据、u16 reg不兼容。虽然我只在main.c中包含file1.h

请帮我修一下


谢谢。

在对提供的示例进行了大量修复后,请查看我遇到的以下错误:

函数_1定义了两次

我无法重现你所经历的错误


也许我无意中编辑了你的例子。请更改它,以便发生您遇到的错误。

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

main在哪里?不同的函数不要使用相同的名称。两个函数的返回值末尾都应该有分号。另外,错误出现在哪一行?请编辑您的问题以分离不同文件的代码块,并给出编译命令谢谢您的编辑。奇怪的是,即使在编辑问题之前,由于他使用了“static”,也没有出现此错误。仔细阅读OP问题,所有编辑的版本都显示出不完整的图片。具体地说,这个错误提到了带有2个16位参数的函数,该声明在file2.h中,正如他所说的,它不包含在main.c中。那么为什么编译器知道它呢?可能是链接器错误报告。但是OP没有显示链接器的详细信息。这个问题可能会被吹毛求疵,但最重要的是,他的声明、定义和使用是一致的。没错。这是一个链接器错误报告。我不知道如何显示OP,这是两个不同的函数。因为,在每个.c文件中,我都有同名的函数。我在main.c中使用了Static。但这并不能使代码变得更好,主要目的是文件.c包含同名函数。但每个功能都有不同的工作。如果我想使用文件_1.c。我只加入了1.h文件。否决票是什么?如果你进一步澄清,我将编辑答案
#ifndef FILE_H_1
#define FILE_H_1
u32 function_1(u32 data);
u32 function_2(u16 data);
#endif
#ifndef FILE_H_2
#define FILE_H_2
u32 function_1(u32 data);
u32 function_3(u16 data, u16 reg);
#endif
#include "file1.h"
static u32 function_3 (u32 data)
{
     //do something;
}

void main() {
     u32 m = function_1(0);
}
#include "file1.h"
u32 function_1 (u32 data) {
      return 2*data;
}
u32 function_2(u16 data) {
      return 3*data;
}
#include "file2.h"
u32 function_1(u32 data){
     return data;
}
u32 function_3(u16 data,u16 reg){
     return 5*data + reg;
}