2011-06-06 87 views
1

我嘗試使用兩個外部的Fortran模塊,它們具有相同的名稱(在本例中爲mod_param)。所以,當我嘗試編譯我的代碼,編譯器提供了以下錯誤,在Fortran中使用外部模塊

mod_param.o:在功能mod_param._': mod_param.f90:(.text+0x0): multiple definition of mod_param._」 mod_param.o:mod_param.F90 :(文字+爲0x0):第一這裏定義

有沒有辦法解決它,而無需重命名模塊文件及其名稱之一?我不喜歡重命名,因爲外部模塊由其他人維護,我不想和他們一起玩。是否有任何特殊用途聲明來做到這一點?

+0

我也一樣的問題。在Rook和Wallyk的回答之後,我想一個好的解決方案就是爲程序的模塊名稱添加前綴或後綴(例如myprogram_mod_param)。 – alexis 2015-04-15 15:54:06

回答

2

不需要。在至少一個模塊中,必須更改源代碼中的函數名稱。

由於代碼正在被其他人維護,因此考慮自動執行重命名:可能項目Makefile可以運行sed腳本,該腳本會更改函數名稱。爲了確保依賴關係清晰,請務必使sed腳本的輸出成爲一個新文件名,該文件名用於編譯—處女模塊將具有未編譯或鏈接到項目中的文件名。

即使它在某種程度上可以用相同的名稱連接它們,你將如何控制與名稱一起被調用?

2

根據F2003標準模塊名稱是全局實體,並且在程序中必須是唯一的,並且對於內在模塊有一定的擴展性。

所以,這將是一個沒有(再說了,你會怎麼告訴他們,除了他們都是同一個名字的?)