0

gcc バージョン 2.96 の i686 で Red Hat Linux リリース 9 カーネル 2.4.20-8 を使用しています。私は次のようなコードを持っています:

include "stdio.h"

.....
ifndef _ILP32
return fopen64 (fname, dhtype);
else
return fopen (fname, dhtype);
endif

しかし、次のようなエラーが表示されます。

`fopen64' が宣言されていません (最初にこの関数を使用してください)。

使用しているオペレーティング システムが 32 ビットであることを願っていますが、検出されず、本来あるべきではない_ILP32return fopen64 (fname, dhtype);に移動します。

コンパイラに を検出させるにはどうすればよい_ILP32ですか?

4

1 に答える 1

0

追加してみる

#define _ILP32

手で。同じ効果が-D_ILP32コンパイラのコマンドラインに追加されています。

別の可能性は、どこでも変更することです

#ifndef _ILP32

#ifdef _ILP64

これは、64 ビット システムの gcc によって定義されます。

于 2013-09-19T14:27:08.143 に答える