Ini ialah command fortc yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
fortc - Utiliti Unidata untuk menjana kod C yang serasi dengan fortran
SINOPSIS
kubu c [-L LibDir] [-O OpSys] fail
DESCRIPTION
kubu c Membaca kod C daripada `fail', mengubahnya menjadi kod serasi FORTRAN, dan kemudian
menulis keputusan kepada output standard. Transformasi adalah bergantung kepada sistem pengendalian
kerana tiada piawaian dalam hal ini.
Sistem pengendalian sasaran boleh ditentukan dalam beberapa cara. Jika `-O' pilihan ialah
diberikan, maka sistem pengendalian yang ditentukan oleh hujahnya digunakan; sebaliknya, jika
pembolehubah persekitaran `OS' wujud, maka sistem pengendalian yang ditentukan oleh nilainya ialah
digunakan; jika tidak, sistem pengendalian lalai -- ditentukan pada masa pemasangan -- ialah
terpakai.
Nama global yang bukan definisi fungsi tetapi boleh diakses daripada kedua-dua C
dan FORTRAN hendaklah disertakan dengan `FC_NAME()' makro:
extern int FC_NAME(foo)(void); /* Fungsi FORTRAN */
struct luaran {
terapung f;
int i;
} FC_NAME(comblk); /* blok biasa FORTRAN */
cfoo()
{
kembalikan FC_NAME(foo)(); /* panggil fungsi FORTRAN */
}
Fungsi C yang akan dipanggil dari FORTRAN ditulis seperti berikut:
int
/*FORTRAN*/
foo(
nama laluan aksara, /* nama fail fail baharu */
jumlah sebenar, /* amaun untuk frobdicate oleh */
doubleprecision dbl, /* amaun untuk berdesing sebanyak */
fungsi void errf, /* rutin ralat */
rcode integer /* mengembalikan kod ralat */)
{
...
atau, setara,
int
/*FORTRAN*/
foo(nama laluan char*, jumlah float*, double* dbl,
void (*errf)(), int* rcode)
{
...
Perkara yang perlu diperhatikan dalam penulisan fungsi serasi FORTRAN ialah:
1. Fungsi yang akan diubah ditandakan dengan prosiding `/*FORTRAN*/' komen, yang
mesti muncul pada baris sebelum nama fungsi. Sebarang pengisytiharan jenis pulangan mesti
teruskan komen.
2. Parameter formal mesti diisytiharkan dalam kurungan fungsi dan dipisahkan oleh
koma.
3. Parameter formal adalah terhad kepada jenis berikut:
watak or char*
Untuk pembolehubah aksara Fortran.
ketepatan berganda or berganda*"
Untuk nilai titik terapung berketepatan dua kali.
sebenar or terapung*
Untuk nilai titik terapung ketepatan tunggal.
integer or int *
Untuk nilai integer.
jenis fungsi nama or jenis (*nama)()
Untuk fungsi mengembalikan jenis `jenis'.
4. Mesti tiada apa-apa yang penting selepas pendakap pembukaan, `{', dan pada baris yang sama.
Fungsi harus ditulis menggunakan pembolehubah dengan nama yang sama dengan formal
parameter, dan dengan semantik yang sama. Dalam kes jenis parameter formal
`watak' (iaitu Fortran character-variables), pembolehubah dengan nama yang sama akan wujud
dan akan menjadi jenis `char*'. Di samping itu, untuk setiap hujah pembolehubah aksara, tempatan
pembolehubah jenis kamiran akan dibuat dan nilainya akan menjadi saiz yang berkaitan
pembolehubah aksara. Nama pembolehubah ini akan menjadi nama yang berkaitan
pembolehubah aksara dengan "_len" dilampirkan (cth "pathname_len"). Pembolehubah panjang ini mungkin
digunakan dalam fungsi sama seperti pembolehubah lain.
Sebagai contoh, di bawah SunOS fungsi sebelumnya akan menjadi (jika ia terkandung dalam
fail `foo.src'):
#baris 1 "foo.src"
int tidak bertanda tangan
#baris 2 "foo.src"
foo_(nama laluan, jumlah, errf, rcode, nama laluan_len)
char *nama laluan;
int pathname_len;
terapung *jumlah;
batal (*errf)();
int *rcode;
{
#baris 9 "foo.src"
Ambil perhatian bahawa 1) arahan talian prapemproses telah ditambah; 2) nama fungsi telah
diakhiri dengan garis bawah; dan 3) parameter formal, `pathname_len', telah di cipta.
Di bawah UNICOS, fail yang sama akan menjadi
#termasuk
#baris 1 "foo.src"
int tidak bertanda tangan
#baris 2 "foo.src"
FOO(berpandukan, jumlah, errf, rcode)
_fcd dinamakan laluan;
terapung *jumlah;
batal (*errf)();
int *rcode;
{
char *pathname = _fcdtocp (pathname);
unsigned pathname_len = _fcdlen (pathname);
#baris 9 "foo.src"
Perhatikan, khususnya, tambahan `#include ' dan penciptaan dan
permulaan pembolehubah tempatan `nama jalan' dan `pathname_len'.
Utiliti ini dilaksanakan sebagai skrip dan menggunakan utiliti yang dibekalkan oleh sistem sed(1) dan
m4(1).
PILIHAN
-L LibDir"
Mentakrifkan direktori yang mengandungi fail perpustakaan `fortc'. Lalainya ialah
ditentukan pada masa pemasangan.
-O OpSys
Mentakrifkan sistem pengendalian sebagai OpSys. Nilai yang diketahui termasuk `aix', `convexos',
`domainos', `hpux', `irix', `msoft', `next-absoft', `newsos', `sunos', `ultrix',
`unicos', dan `vms'. Untuk membolehkan fleksibiliti yang lebih besar, nilai yang diketahui mungkin ada
sebarang akhiran (cth `sunos_4.1').
PERSEKITARAN
OS Mentakrifkan sistem pengendalian jika pilihan `-O' tidak ditentukan. Nilai yang diketahui
adalah sama dengan -O pilihan.
Gunakan fortc dalam talian menggunakan perkhidmatan onworks.net