2012-03-17 4 views
0
#include <string.h> 
#include <memcopy.h> 
#include <pagecopy.h> 

#undef memcpy 

void * 
memcpy (dstpp, srcpp, len) 
void *dstpp; 
const void *srcpp; 
size_t len; 
{ 
    unsigned long int dstp = (long int) dstpp; 
    unsigned long int srcp = (long int) srcpp; 
    ... 

これは私たちのおなじみのlib関数memcpyの実装ですが、その シグネチャは認識されません。以前は見たことがありません。誰がそれが何であるか教えてもらえますか?私はglibcで奇妙な関数の署名を見つけましたが、誰も私にそれをexpainできますか?

+0

どのアーキテクチャがこのモジュールを採用していますか? x86サポート以外にも、奇妙なコードがたくさんあるかもしれません。 –

+0

x86だと思います。このシグネチャはglibc-2.4で見つかりました。 –

+0

kagaliさん、ありがとうございました –

答えて

2

これが私たちの身近なlibに関数のmemcpyの実装ですが、私はあなたが認識していないそれの側面

その署名を認識しないのですか? K & R(pre-ANSI)Cなどで書かれているのでしょうか?代わりにそのように書かれていれば、それを認識したでしょうか。

+0

はい、K&Rに書かれています。ありがとうございます。この署名がまだ使用されているのはなぜですか?とても奇妙。 –

+1

20年前に廃止され、後で適切なCを使用するよりも言語から削除されたコンストラクトを維持するためには、互換性があるとか「移植性」があると思う人がいるため、ANSIコンパイラがなくてもglibcで大部分のコードをコンパイルします。 –

関連する問題