C语言error: multiple definition of `***'错误

今天在C与C++混合编程时遇见一个问题,我有一个二次封装的a.c和a.h文件,由于一些原因将该文件拷贝为b.c和b.h文件也放到项目中,编译时报error: multiple definition of `***'错误,问题我知道是出在a.c和b.c文件中函数名重复,而C语言中又不支持重载,编译报重定义很正常。但是使用static声明静态函数,又只能被本文件内部调用,不符合我的预期。最后解决方式是:重写一个C++类调用b.h文件,主界面通过调用该类去调用b.c文件中的函数即可。(注:b.c和b.h文件不能放在项目中,否则编译不通过)

pro文件内容:
SOURCES += \
        main.cpp \
        a.c \
        bLabel.cpp    (调用b.h的新C++类)

HEADERS += \
        a.h \
        bLabel.h

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天结束时发现这种解决方法还是错误的,虽然编译能通过,但是新的类调用的不是b.c中的函数,而是a.c文件中同名函数,原因可能是虽然#include “b.h”,但是项目中没有将文件包含进来,编译时程序找的还是a.c文件中的函数,最后没办法还是改函数名重新将文件包含进来编译,运行通过。

你可能感兴趣的:(C语言,Qt)