我尝试使用Haskell调用这个简单的C代码:
time_t rawTime = time( NULL );
struct tm* timeInfo = localtime( &rawTime ); /* Using address of a local variable */
printf( "The current date is: %s", asctime( timeInfo ) );
所以我写道:
data CTmStruct = CTmStruct
type CTmStructPtr = Ptr CTmStruct
foreign import ccall "time" c_time :: Ptr CTime -> IO CTime
foreign import ccall "localtime" c_localtime :: Ptr CTime -> IO CTmStructPtr
foreign import ccall "asctime" c_asctime :: CTmStructPtr -> CString
main :: IO ()
main = do
rawTime <- c_time nullPtr
tmStructPtr <- c_localtime ??? -- How to get an address of rawTime?
print $ c_asctime tmStructPtr
那么我如何获取本地值rawTime
的地址,以便将其作为c_localtime
函数的参数?我已经阅读了Foreign
模块的文档,但是没有找到这个问题的答案。非常感谢任何帮助。