資源描述:
《c_與fortran混合編程技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、研究與探討C++與Fortran混合編程技術(shù)王紅林劉巖邊保林梁曉中國(guó)建筑科學(xué)研究院計(jì)算中心摘要本文簡(jiǎn)要介紹了采用C++與Fortran混合編程技術(shù)分析表明ABDS采用混合編程技術(shù)極大地保護(hù)了已有的分析資源同時(shí)又充分享受到C++帶來(lái)的方便和快捷關(guān)鍵詞混合編程面向?qū)ο笳{(diào)用協(xié)議ABDS軟件中采用Fortran語(yǔ)言編寫結(jié)構(gòu)計(jì)算由于兩者產(chǎn)生的背景不同它們是存在差異分析程序采用C++編寫交互輸入界面和圖形處理的主要表現(xiàn)為以及輔助設(shè)計(jì)部分本文重點(diǎn)介紹ABDS軟件中C++函數(shù)調(diào)用與Fortran混合編程技術(shù)參數(shù)傳遞多
2、維數(shù)組的處理1C++語(yǔ)言和Fortran語(yǔ)言的發(fā)展內(nèi)存動(dòng)態(tài)管理在程序設(shè)計(jì)語(yǔ)言的發(fā)展過(guò)程中FORTRAN語(yǔ)言特別是在多維數(shù)組的處理方面C++不如FOR-被認(rèn)為是科學(xué)計(jì)算的專用語(yǔ)言后來(lái)推出的FOR-TRAN直觀和易于理解FORTRAN從一開始就用于科TRAN90和FORTRAN95版本也不例外它們雖然學(xué)計(jì)算必須處理矩陣一類的數(shù)學(xué)問(wèn)題多維數(shù)組可以完全實(shí)現(xiàn)C++語(yǔ)言同樣的功能然而其軟件開是它的主要使用工具而C語(yǔ)言一開始是面向系統(tǒng)發(fā)環(huán)境和軟件的集成性等方面都遠(yuǎn)不如C++語(yǔ)言程序員的在應(yīng)用中很少會(huì)涉及多維數(shù)組因此
3、在近年來(lái)隨著計(jì)算機(jī)軟硬件技術(shù)的發(fā)展數(shù)據(jù)結(jié)構(gòu)處理多維數(shù)組方面存在著較大差異數(shù)據(jù)庫(kù)管理技術(shù)可視化與計(jì)算機(jī)圖形學(xué)用戶接3C++語(yǔ)言和Fortran語(yǔ)言的混合編程口系統(tǒng)集成以及人工智能等領(lǐng)域的成果被逐漸應(yīng)用到結(jié)構(gòu)分析軟件中結(jié)構(gòu)分析軟件的設(shè)計(jì)并不僅C++語(yǔ)言和Fortran語(yǔ)言的混合編程就是利用僅局限于單一的科學(xué)計(jì)算需要涉及眾多的軟件開二種編程語(yǔ)言編寫的源代碼構(gòu)建程序模塊的過(guò)程發(fā)領(lǐng)域C++語(yǔ)言可以提供這類軟件開發(fā)所需的功混合語(yǔ)言編程具有以下優(yōu)點(diǎn)能而用FORTRAN90卻很難實(shí)現(xiàn)另一方面從利用某種語(yǔ)言處理某些問(wèn)題
4、特有的速度和優(yōu)軟件的編程環(huán)境來(lái)看目前FORTRAN90的編譯器勢(shì)如FORTRAN語(yǔ)言具有強(qiáng)大的科學(xué)計(jì)算速度和能極少而C++語(yǔ)言的編譯系統(tǒng)相當(dāng)普及可以運(yùn)行力是一種適合數(shù)值計(jì)算的語(yǔ)言其語(yǔ)法檢查嚴(yán)格在各種機(jī)型上便于實(shí)現(xiàn)跨平臺(tái)的軟件系統(tǒng)集成運(yùn)行穩(wěn)定性好在科學(xué)計(jì)算和工程分析領(lǐng)域中有廣泛的應(yīng)用但是在繪圖網(wǎng)絡(luò)等方面則顯不足2C++語(yǔ)言和Fortran語(yǔ)言的差異VisualC++具有良好的圖形界面和系統(tǒng)管理能力FORTRAN語(yǔ)言發(fā)展之初就被認(rèn)為是科學(xué)計(jì)算的同操作系統(tǒng)有很好的親和性專用語(yǔ)言C最初出現(xiàn)是用作UNIX操作系
5、統(tǒng)的記述調(diào)用已經(jīng)存在的源代碼歷年的科學(xué)研究中語(yǔ)言發(fā)展之初一直作為較低級(jí)語(yǔ)言編寫與硬我們積累了大量成熟的FORTRAN程序如現(xiàn)階段結(jié)件關(guān)系密切的底層軟件由于UNIX的成功和廣泛構(gòu)分析程序大都是用FORTRAN語(yǔ)言編寫的為了有使用C語(yǔ)言開始流行起來(lái)并成為一種普遍使用效地利用現(xiàn)有的資源可把原有的源代碼編譯成動(dòng)的程序設(shè)計(jì)語(yǔ)言態(tài)鏈接庫(kù)DLLDynamicLinkLibrary以便于工程設(shè)計(jì)CAD與智能建筑2001(6)11研究與探討C++編程語(yǔ)言的調(diào)用integeri2(2)ABDS軟件是在AutoCADR14
6、圖形平臺(tái)上開發(fā)實(shí)realr1[reference]realr2(2)現(xiàn)的其開發(fā)環(huán)境為VisualStudio6.0其中C++STRUCTURE/ABDS_LAYER/程序采用VC++6.0編譯鏈接Fortran程序采用integeri1DigitalVisualFortran6.0編譯鏈接共處character*81str于VisualStudio6.0集成開發(fā)環(huán)境下面分函數(shù)realr1直接嵌入和DLL調(diào)用兩部分介紹ABDS中采用的混合ENDSTRUCTURE編程方法RECORD/ABDS_LAYER
7、/layer(100)ENDSUBROUTINE3.1函數(shù)直接嵌入方法ENDINTERFACE混合語(yǔ)言編程要遵守函數(shù)名一致參數(shù)名一這是Fortran中調(diào)用C++函數(shù)的最典型的手法致函數(shù)類型匹配參數(shù)類型匹配以及參數(shù)傳遞一一般而言Fortran編譯時(shí)默認(rèn)的參數(shù)傳遞方式為致等規(guī)則地址傳遞為安全起見(jiàn)還是申明為[reference]對(duì)于C++中調(diào)用FORTRAN語(yǔ)言編寫的函數(shù)名一如需特別處理為值傳遞則申明為[value]相應(yīng)致是指調(diào)用函數(shù)和被調(diào)用函數(shù)不僅名稱一致而于地址傳遞在C++函數(shù)中需申明為指針或引用且大小
8、寫一致相應(yīng)于值傳遞在C++函數(shù)中需需申明為數(shù)據(jù)參數(shù)名一致也要求不僅名稱一致而且大小在Fortran90和Fortran95版本中數(shù)據(jù)類型可以寫一致完全和C++的普通數(shù)據(jù)類型相對(duì)應(yīng)包括整型實(shí)函數(shù)類型匹配和參數(shù)類型匹配是指調(diào)用函數(shù)和型字符串BOOL型......以及自定義的結(jié)構(gòu)被調(diào)用函數(shù)中數(shù)據(jù)類型一致或相協(xié)調(diào)體等參數(shù)傳遞的類型要一一匹配單個(gè)參數(shù)傳遞有實(shí)例2C++中調(diào)用Fortran子程序兩種方式值傳遞和地址傳遞傳遞參數(shù)的地址在Fortran中申明為上述規(guī)則可