1
正如您所知道的,對於C中的任何標識符ident
,您可以編寫&ident
以獲取指向ident
的內存位置(指針),而不管該位置是否在堆或堆棧上。在使用C類型時,通常有助於訪問此功能。Haskell的Foreign.C相當於C的&符號運算符(&)
FFI中Haskell中是否存在等價操作?
正如您所知道的,對於C中的任何標識符ident
,您可以編寫&ident
以獲取指向ident
的內存位置(指針),而不管該位置是否在堆或堆棧上。在使用C類型時,通常有助於訪問此功能。Haskell的Foreign.C相當於C的&符號運算符(&)
FFI中Haskell中是否存在等價操作?
如果您有要導入到Haskell這樣的C標識符,您可以通過「&」語法轉換爲指針,地址FFI declarations,像這樣:
foreign import ccall "&" bar :: Ptr CInt
通常,這是相當這是一件難得的事情,因爲你導入的幾乎所有東西都已經是一個指針了。
通過使用stable pointers,Haskell值本身也可以變成指針,以確保它們不受垃圾回收器影響。
想想你擁有的每一個外國參考指標。你已經有他們的地址。除非你詢問地址的地址,在這種情況下,Haskell不能像C那樣工作,以至於不能支持(Haskell保留移動數據的權利 - 而且GHC的確有很多) – luqui 2011-04-21 01:07:44
也許你應該提出更高層次的問題。你想達到什麼目的? – 2011-04-21 02:22:54
我正在玩OpenCLRaw,並試圖編譯(鏈接*似乎*工作正常)。 – fatuhoku 2011-04-21 10:42:41