最簡單的方法是用您喜歡的語言編寫腳本,該腳本讀取C定義並將其轉換爲Fortran。如果你修復你的語法,那麼這很容易。
1)的#define XXX YYY變爲整數,參數:: XXX YYY =
2)是用Fortran無無符號無符號所以短褲和短褲均爲整數(種類= 1)。
3)這取決於你如何使用字符數組。如果他們返回單個字符,而不是分配給en塊,則它們可以被聲明爲字符t(nword)。如果他們被期望持有字符串,那麼他們應該被聲明爲字符(len = nword)t。
4)typedef結構{ ... }數據文件
成爲
類型的數據文件 序列 ... 端型
5)做到了這一切,你需要確保C和Fortran代碼具有相同的字節對齊方式。您的字符數組655不在字節邊界上,因此您可能會遇到對齊問題。
第二種方法是玩宏並獲取宏來爲你做代。您需要爲C定義一組宏,爲Fortran定義另一組宏。所以,你會得到類似
STRUCT_BEG(datafile)
INTEGER(a)
SHORT(b)
...
CHARA(t,nword)
FLOATA(dat,nfloats)
STRUCTEND(datafile)
的C定義是
#define STRUCT_BEG(ignore) typedef struct {
#define STRUCT_END(name) } name;
#define INTEGER(a) int a;
#define CHARA(a,length) char a[length];
的Fortran的定義會是這樣的
#define STRUCT_BEG(name) \
type name \
sequence
#define STRUCT_END(ignore) end type
#define INTEGER(a) integer::a
#define CHARA(a,length) character(len=length):: a
如果用-e編譯,C編譯器可以用來生成兩個頭文件。
來源
2013-04-13 19:45:52
cup
那麼,你可以做到這一點,但它需要將c類型轉換爲fortran,所以你需要一個翻譯或解釋器。 – 2013-04-10 23:12:24
Fortran ISO C綁定不瞭解Fortran源代碼中的C語言。它爲您提供了在Fortran中指定使用與C兼容的變量,調用等的方法。您必須編寫Fortran代碼;它不是自動的。 – 2013-04-10 23:32:34