0

在函数 main() {...}

1)#include头文件string.h

2)我对自己的文件进行原型制作,称之为strcpy:

**char *strcpy(char *strSource , const char *dest);**

3) 我还希望在 main() 的 string.h 中使用“真正的” strlen函数。

4)在另一个编译文件中,我有我的 strcpy 版本。

问题:如何让链接器选择我的 strcpy 版本而不是 string.h 中的原型?

enter code here
#include <conio.h>
#include <string.h>
char *strcpy(char *source , const char *dest); 
void main()
{
char *s, *d;
strcpy(s,d);
getch();
}

#include <stdio.h>
char *strcpy(char *strDestination, const char *strSource)
{
char *ptr;
printf("made it!");
return ptr;
}
4

2 回答 2

4

你不能在 C 中做到这一点。这就是 C++ 引入命名空间的原因之一。

您唯一能做的就是为您自己的函数使用一个不冲突的名称。

于 2012-05-29T20:52:34.537 回答
1

这不是一个标准的事情,我很确定如果你能做到,你将不得不阅读你的链接器的手册。如果您尝试移植它,您将需要阅读您尝试移植到的每个平台的每个链接器的手册。

更常用的做法是用自己的名字编写自己的函数。如果您需要挂钩标准库中的功能,您将获得该库的源代码并构建您自己的版本。

于 2012-05-29T20:54:19.507 回答