fortranのCommonブロックをC++から読む
例えばinteger rnum common/rnumstat/rnumというfortranのcommonブロックをC++で読みたいときは
extern "C" { extern struct{ int rnum; } rnumstat_; }のように宣言し、 C++のプログラムの中で
hoge = rnumstat_.rnum;のようにして読み込めばよい。
fortranで作った配列をC++で読むときの注意点
Fortranの配列の始まりは通常1から、C++中では0からなので Fortranのプログラム中でinteger a(10)と定義していた場合、C++中では0番目の要素がFortranでの1番目の 要素と一致する。つまり
a[0] = a(1)となる。
fortranで作った配列をC++で読むときの注意点その2
Fortran中で多次元配列を作った場合は以下の事に注意する。 メモリ上での配列のメモリ配置の違いから、例えばfortranでinteger a(5,10)と定義していた場合、C++で読み込むには
int a[10][5];と定義する必要がある。行と列の要素が逆になる。 4次元配列
integer aa(3,4,5,6)の場合は、
int aa[6][5][4][3];となる。
fortranとC/C++の変数の対応
Fortran | C/C++ |
integer*2 | short int |
integer | long int or int |
logical | long int or int |
logical*1 | bool |
real | float |
real*8 | double |
complex | struct{float real; float imag;} |
character*10 abc | char abc[6]; |