1

Fortran77 でコードを最適化しようとしていますが、ルーチンまたはヘッダー ファイル内で次のように宣言された配列が、ポインターの配列または構造体の配列のどちらであるかを知りたいです。

ケース 1: real*8 xred(maxatm)

ケース 2: 一般的な /atoms/ x(maxatm)

私はすでにインターネットで検索しましたが、これに関する情報は見つかりませんでした.私が見つけた唯一のことは、配列をルーチンに渡すときに参照によって渡されることでした. しかし、ヘッダーファイルまたはルーチン内で宣言されている場合については、何も見つかりませんでした。

前もって感謝します!

4

1 に答える 1

2

.f77 'header'/common/.CMN ファイル内で、プログラム内で使用される変数を宣言しています。これらの変数に必要なスペースは、ヘッダー宣言を含む各ファイルのコンパイル時に確立されます。したがって、「My.CMN」には

REAL*8 XEDG(-2:MAXNB+4)  ! left x-edges of cells    
REAL*8 YEDG(-2:MAXNB+4)  ! left y-edges of cells 
REAL*8 XC(-2:MAXNB+4) ! X CELL CENTERS
REAL*8 YC(-2:MAXNB+4) ! Y CELL CENTERS

これらの変数は、.f77 ファイルで宣言されるたびに作成されますINCLUDE 'My.CMN'

ただし、共通ブロックを使用する

COMMON /GRID/ XEDG,YEDG,XC,YC

特定の .CMN ファイル (またはその他のもの) に含まれる変数がグローバル/共有に拡張されていることをコンパイラに伝えます。ここでは、コンパイラはメモリ内の関連スペースへのポインタを使用します。

The COMMON statement defines a block of main memory storage so that 
different program units can share the same data without using arguments.

Sun FORTRAN 77 4.0 Compiler Reference Manual の詳細については、こちらを参照してください。COMMON

于 2012-03-07T19:35:45.313 に答える