读书人

大神关于.h中定义函数多种实现有关

发布时间: 2012-04-25 19:32:32 作者: rapoo

求助大神,关于.h中定义函数,多种实现问题
各大神请看:
//a.h定义一函数
int func(int)

//b.c实现
#include "a.h"
int func(int a)
{
return a+1;
}


//c.c实现
#include "a.h"
int func(int a)
{
return a+2;
}




//main.c
#include "a.h"
int main()
{
func(5);//调用func函数
}

此时编译通过,运行链接不通过。请问有没有办法指定main调用的来自b.c(或者c.c)func()函数??????????

[解决办法]

探讨

引用:

引用:

引用:

同一个工程下,这样不行的,因为你的函数前面没有加static,那么他们的作用范围就是整个工程,所以,编译器会认为,你在两处定义了同样名字的函数func()。

C++中名字相同的函数,入参列表不同,是允许的,叫函数重载——不过入参列表也一样还是不行
至于C,函数名相同的两个全局函数,肯定不行
……

[解决办法]
不要然lz吧func函数放到两个不同的dll中吧,C中动态载入不同的dll

读书人网 >C语言

热点推荐