簡體   English   中英

Fortran如何返回數組?

[英]How does Fortran return arrays?

Fortran庫CUBPACK中的子例程Rule_Tn需要一個描述集成矢量函數的參數Integrand 它是

INTERFACE 
   FUNCTION Integrand(NF,X) RESULT(Value)
      USE Precision_Model
      INTEGER,                       INTENT(IN)  :: NF
      REAL(KIND=STND), DIMENSION(:), INTENT(IN)  :: X
      REAL(KIND=STND), DIMENSION(NF)             :: Value
   END FUNCTION Integrand
END INTERFACE

由於我想從C代碼中調用Rule_Tn ,因此我需要在C中定義一個與上述接口完全匹配的函數類型。 因此,我嘗試找出Fortran函數如何返回數組。 起初我認為以下C簽名

void Integrand(double* value, const int* nf, const int* x);

與上面的界面匹配。 但是很不對! 我遇到了段錯誤。 而且我已經測試過double是REAL(KIND=STND)的對應類型, STND來自模塊Precision_Model

現在誰能告訴我什么是正確的簽名? 我正在使用GNU Fortran和C編譯器。

參見GNU文檔 看起來您在Fortran和C之間以不同的順序提供了參數。嘗試將value放在C原型的最后。

另外,您在FUNCTION行上缺少bind(C)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM