Come accedere a una struttura C da Fortran

November 4

Come accedere a una struttura C da Fortran


C è uno dei linguaggi di programmazione più usati al mondo, a partire da agosto 2011. Anche se è stato progettato per creare software di sistema, la sua versatilità ha fatto una buona scelta per le applicazioni portatili. In realtà, ci sono poche piattaforme che non hanno un compilatore C scritta per loro. Fortran, a differenza di C, si rivolge verso il calcolo numerico e il calcolo scientifico ed è ampiamente usato in programmazione ad alte prestazioni. A causa di alcune importanti differenze tra le due lingue, l'accesso a una struttura C in Fortran non è così facile come sembra.

istruzione

1 Creare un blocco comune di nome. Questo è l'unico modo per accedere a una struttura di C da Fortran perché fornisce una mappatura uno-a-uno dei membri della struttura. Se la struttura di C utilizza un blocco comune senza nome, è necessario modificare in un uno di nome.

2 Utilizzare il nome della struttura C di nominare il blocco comune. Ecco quello che una struttura C si presenta come:

struct mystuff {

double x;

int y, z;

doppia t;

};

principale() {

}

Ecco l'adeguato codice FORTRAN che contiene il blocco comune denominato:

programma cstruct

real (8) x, t

intero y, z

comune / MyStruct / x, y, z, t

fine

3 Dichiarare la struttura C come una variabile globale. Per fare questo, è possibile posizionare la sua dichiarazione al di fuori di qualsiasi funzione o di posizionarlo all'interno di una funzione che ha il qualificatore "Esterno".

4 Compilare il file sorgente C e utilizzare il "-qalign = imballato" tipo di compilation nel compilatore XL Fortran. "Qalign" dice al compilatore cosa allineamento governa deve utilizzare per la compilazione dei file e consente di evitare problemi di prestazioni con i dati non allineati. "Imballato", gli oggetti di un tipo derivato saranno conservati senza imbottitura tra i componenti.

Consigli e avvertenze

  • È possibile inserire "#pragma allineare" i parametri nella struttura C per evitare di utilizzare il "-qalign = imballato" tipo di compilation.