是否可以为头文件中声明的相同函数提供2个(或更多)不同的实现?我举一个例子-假设我们有一个名为一个头文件common.h
和2个名为源文件src1.c
和src2.c
.
//lots of common function declarations implemented in some file common.c int func(int a, int b);
#include "common.h" int func(int a, int b) { return a+b; }
#include "common.h" int func(int a, int b) { return a*b; }
假设我希望每个源文件都使用其本地版本func()
.有可能这样做吗?
是的,但如果您尝试将主程序与两者联系起来src1
,src2
则会遇到错误,因为它不知道要使用哪个定义.
标头只是其他代码对象了解其他对象中可用内容的方法.将标题视为合同.预计合同将被填充一次,而不是零次或多次.如果您链接对阵双方src1
和src2
,你已经基本上填补了int func(int a, int b);
合同的两倍.
如果需要在具有相同签名的两个函数之间切换,则可以使用函数指针.