当前位置: 技术问答>linux和unix
请教一个关于"重载"c库函数的问题
来源: 互联网 发布时间:2015-11-05
本文导语: 我的工程调用了一个c库,但是有个地方想用自己修改后的函数 举个例子,lib中有a.h,a.c,而a.c中有函数fun(). 现在工程的一个地方需要使用修改过后的fun()函数 而其他地方依旧用原先库的函数 他们使用了同一个.h文件 vc下...
我的工程调用了一个c库,但是有个地方想用自己修改后的函数
举个例子,lib中有a.h,a.c,而a.c中有函数fun().
现在工程的一个地方需要使用修改过后的fun()函数
而其他地方依旧用原先库的函数
他们使用了同一个.h文件
vc下只要把这个.c(.cpp)文件拷贝出来,然后修改该函数,编译前指定使用该.c文件就可以了
在linux下我该怎么做呢?
举个例子,lib中有a.h,a.c,而a.c中有函数fun().
现在工程的一个地方需要使用修改过后的fun()函数
而其他地方依旧用原先库的函数
他们使用了同一个.h文件
vc下只要把这个.c(.cpp)文件拷贝出来,然后修改该函数,编译前指定使用该.c文件就可以了
在linux下我该怎么做呢?
|
编译连接时要把该文件当作是自己的文件编译连接。
|
将你修改的函数,加到一个名字空间,如:
namespace mynewfunc{
void fun();
}
引用的时候用mynewfunc::fun();
如果不行可以试试struct,如:
#include
#include
#include
#include
#include
#include
struct mynewfun{
void fun();
};
void mynewfun::fun()
{
printf("testn");
}
int main()
{
struct mynewfun mynew;
mynew.fun();
exit(0);
}
namespace mynewfunc{
void fun();
}
引用的时候用mynewfunc::fun();
如果不行可以试试struct,如:
#include
#include
#include
#include
#include
#include
struct mynewfun{
void fun();
};
void mynewfun::fun()
{
printf("testn");
}
int main()
{
struct mynewfun mynew;
mynew.fun();
exit(0);
}