首先,我知道在Fortran中使用通用塊是一個壞主意(通常編程)。但是,我正在更新別人的代碼,我不想搞亂那些已知工作的東西。
其次,我知道我應該發佈更具體的東西,然後這個。如果我知道如何將它縮小到某種程度,我會這樣做。然而,因爲我知道,我不認爲你會欣賞2500行代碼,我不能發表一個具體的例子。
考慮到這一點,我無法描述我的問題。爲什麼公用塊變量不保存它們的值?
我更新別人的Fortran代碼。這個人使用了幾個(4)通用塊來設置全局變量。由於某種原因,當我調用使用這種塊的函數時,它的所有值都是0.有沒有人遇到過這種情況?有誰知道爲什麼會發生這種情況?如何重現這一點?任何檢查此的起點都會有所幫助。
對於什麼是價值,上述公共塊聲明爲
common /set/ block,x,y,z,llx,lly,llz,ilx,ily,ilz,third,third2
block
是一個四維陣列。 x
,y
和z
是1D陣列。 llx
,lly
,和llz
,是double precision
類型。其餘的是integer
類型。
在調用任何函數之前,在主程序中聲明並初始化公共塊。
即使您先前設置了它們,它們也爲零?所有公共區塊的聲明尺寸是否相同? – 2013-02-12 12:44:16
你不能將公共塊升級到模塊嗎?唯一的區別是在當前使用通用塊的地方「使用」模塊。主要優點是你只需要在一個地方聲明變量,順序無關緊要。 – sigma 2013-02-12 14:43:44
@sigma我可以,但這需要謹慎。如果可以,我寧願避免這種情況。 – Yotam 2013-02-12 15:33:58