1

現在、fortran から c# へのプロジェクトに取り組んでおり、拡張子が .INC Foll のヘッダー ファイルをいくつか見つけました。ヘッダーファイルの例です

**     MAIN.INC
   INTEGER uid
   INTEGER MathsMarks
   INTEGER AWAMarks
   INTEGER ScienceMarks
   LOGICAL isStudent
   REAL*8 percentage
   REAL avg
   CHARACTER*2 sName
   LOGICAL*1 sUpdateStat
   DOUBLE PRECISION d_var
   complex*8 c8_var

このヘッダー ファイル (.INC) を C# に変換するために使用する最適な戦略を教えてください。

4

1 に答える 1

1

main.incがどのように使われているか知っていますか? 複数のファイルに表示されますか、それとも 1 つのファイルにのみ表示されますか? これらの変数名に関連付けられた共通ブロックはありますか?

それに関連付けられた共通ブロックがない場合は、おそらく、共有されていない一般的に使用されるローカル変数の集まりです。

それに関連付けられた共通ブロックがある場合、それらはグローバル変数です。それが適切に行われていれば、コモンも inc ファイルにあるはずです。C# では、すべてが同じクラスにある場合、これらはクラス レベルの宣言になります。

翻訳

  • 整数 = 整数
  • 論理 = ブール
  • real*4 または real = float
  • 実数*8 = 2倍
  • パラメータ = const
  • 次元は配列宣言です。配列はデフォルトで 1 から始まりますが、これは宣言でオーバーライドできることに注意してください。それらは任意の番号から開始できます。たとえば、ディメンション (-23:10) は -23 から始まります。
  • 等価は共用体です
  • character*n は n 文字の文字列で、スペースが埋め込まれ、null で終了していません

[編集済み] 最初は、プログラムが何をしているのかを理解するまで、最初の翻訳ではすべてがパブリックで静的です。それができたら、リファクタリングできます。

common という名前の場合は、名前付き common と同じ名前の静的クラスに入れます。名前が付けられていない共通の場合は、静的宣言としてメイン クラスに配置します。通常、何かが共通ブロックにある場合、それは関数間で共有されるため、構造体には入れないでください。

同等性は厄介なものです。使用方法に依存します。

  • クラスを渡すなど、ルーチンにデータを渡すために使用されることもあります。その場合、同等性を省略して、構造をクラスとして宣言することができます。
  • 場合によっては、値をあちこちに移動するためのグローバル構造体として使用されます。あなたはこれを見なければなりません。これは通常、倍精度の巨大な配列です。すべてのメンバーは、整数、倍精度、文字など、まったく異なるものと同等です。それらは常に同じインデックスを持ち、常に同じ名前を持ちます。
  • 変換に使われることもある
  • 配列の一部を別の部分にマッピングするために使用されることがあります。
于 2013-09-17T09:47:42.593 に答える