0

関数main()で{...}

1)#includeヘッダーファイルstring.h

2)自分のファイルのプロトタイプを作成し、strcpyと呼びます。

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

3) main()のstring.hで「実際の」 strlen関数も使用したいと思います。

4)別のコンパイルファイルに自分のバージョンのstrcpyがあります。

質問:string.hのプロトタイプではなく、自分のバージョンのstrcpyをリンカーに選択させるにはどうすればよいですか?

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++ が名前空間を導入する理由の 1 つです。

できる唯一のことは、独自の関数に競合しない名前を使用することです。

于 2012-05-29T20:52:34.537 に答える
1

これは標準的なことではありません。実行できる場合は、リンカーのマニュアルを読む必要があると確信しています。また、これを移植しようとする場合は、これを移植しようとする各プラットフォームの各リンカーのマニュアルを読む必要があります。

より一般的な方法は、独自の名前で独自の関数を作成することです。標準ライブラリに機能をフックする必要がある場合は、そのライブラリのソースを取得して独自のバージョンを構築します。

于 2012-05-29T20:54:19.507 に答える