[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:38561] Re: File size limit exceeded



川添です。

ファイルサイズが2GBを超えることは、ありますよね。
ext2でなくても、FAT32で困ってしまったり(こちらはファイルシステムの仕様)
してます。

On Fri, 17 Oct 2003 14:31:41 +0900
SATOH Fumiyasu <fumiya@xxxxxxxxxxx> wrote:

> C の場合、_FILE_OFFSET_BITS=64 にすると、ファイルに関連する
> システムコール、関数、型などが 64 ビット対応のものに置き換えられます。
> ファイルのサイズに size_t、オフセットに off_t を
> ちゃんと使っているなら、
> 
>     $ gcc -D_FILE_OFFSET_BITS=64 foo.c
> 
> で OK なんですが、FORTRAN はどうするか知らないです。
(略)
> FORTRAN で駄目なら、f2c で FORTRAN → C に変換してみるとか?
> 

f2cで吐かれるソースはちょっと読みにくいですよ (^^;

g77でしたら、バックエンドはgccと同じですし、
最悪、Cと混ぜ混ぜすればいけると思います。
# 結構大昔(初期のBSD?)から、混ぜられる仕様のようです

命名規約などがちょっとややこしいのですが、
簡単な例をあげておきますと、

print.c

-- ここから
#include <stdio.h>

print_(int *i)
{
    printf("%d\n", *i);
}
-- ここまで

main.f

-- ここから
      integer i
      
      i = 10
      call print(i)
      end
-- ここまで


$ gcc -c print.o
$ g77 main.f print.o
$ ./a.out
10

ポイントは、

・FORTRANでの関数名にアンダースコアを付けたものがCでの関数名になる
・FORTRANでの関数引数は、Cから見るとポインタ渡しになる

といったあたりでしょうか。

(FORTRANでは関数なんて言わないんですけど、最近C系ばっかりなのでお許しを。)


---
川添 朋律 / Kawazoe Tomonori <tsk@xxxxxxxxxx>