2014-07-01 42 views
0

我想根據從另一個數據導入的數量在模塊中創建一個變量。本模塊中的所有功能都將使用新變量,所以我寧願不必在每個函數中重新聲明和分配它。我想在開始時聲明並分配一次,並將其全局分配給整個模塊。但是這不起作用:通過僅使用/包含的東西對變量進行初始化

module example_mod 
    use some_constants, only:derp, blah 

    implicit none 

    real, private :: derived_const = derp*(blah-1.0)/50.0 !doesn't work! 

contains 

!a whole bunch of functions that use derived_const 

我怎樣才能得到我想要的東西?

+0

你得到的實際錯誤是什麼?當你聲明它們時,你是否給了'derp'和'blah'值? – Yossarian

+0

@ Yossarian-我得到的錯誤是「參數'derp'在(1)沒有被聲明或是一個變量,它不會減少到一個常量表達式」,並且是的,some_constants模塊中的所有內容都被分配給申報價值。 – TheBigH

回答

2

編譯器告訴你「derp」應該是一個常量。您可以通過在其聲明中添加說明符parameter來實現它。這對於常量變量也更安全,因爲它可以防止程序員意外更改它們。

+0

相反,是否可以稍後聲明變量併爲其賦值,但是在模塊中的任何函數之外?具有常量的模塊不是我的,所以我不能編輯它。 – TheBigH

+2

您可以像現在這樣聲明'derived_const',只需在子例程中賦值。假設你先調用這個子程序,你模塊中的所有程序仍然可以使用它。但是,您將無法在任何宣言中使用它。 – Yossarian