2012-04-09 66 views
2

在FORTRAN,我可以聲明爲字符串:如何用MPI_Character實現MPI_Send?

character*80 mystring 

,然後把它作爲:

call MPI_Send(mystring,len(mystring),MPI_CHARACTER,...,ierr) 

或者,我可以宣佈我的字符串作爲字符(線更加的數組事情是用C語言傳統所做的那樣)

character mystring(80) 

,然後把它作爲:

call MPI_Send(mystring,80,MPI_CHARACTER,...,ierr) 

我的理解是這兩個調用在調用C函數時會有不同的接口。 (前者通常由編譯器通過傳遞一個附加參數值來保存字符串長度,而後者不會傳遞該參數)。那麼,MPI實現(通常用C語言編寫)如何知道其差異?

回答

1
+0

但是,它如何與MPI_INTEGER,MPI_REAL等一起工作?在前一種情況下,編譯器將發送額外的長度參數,而如果數據類型爲「integer」,「real」,「double precision」......編譯器將不會追加額外的參數。由於它調用的是相同的例程,因此這裏似乎存在問題...... – mgilson 2012-04-09 12:18:17

+0

與'character *(*)'相同,它不會附加字符串長度。 – Anycorn 2012-04-10 05:13:01