一般

用途

COMMON 陳述式指定一般區塊及其內容。 共用區塊是兩個以上範圍設定單元可以共用的儲存區,可讓它們定義及參照相同的資料,以及共用儲存單元。

語法

讀取語法圖跳過視覺化語法圖COMMON /common_block_name/ object_list,/common_block_name/object_list
物件
讀取語法圖跳過視覺化語法圖variable_name(explicit_shape_spec_list)procedure_pointer_name1
附註:
  • 1 Fortran 2003

規則

object 無法參照虛擬引數、自動物件、可配置物件,或具有可配置最終元件、可指定值、函數、函數結果或程序項目的衍生類型物件,或具有 BIND 屬性的變數。 object 不能具有 STATICAUTOMATIC 屬性。

如果 explicit_shape_spec_list 存在,則 variable_name 不得具有 POINTER 屬性。 每一個維度範圍必須是常數規格表示式。 此表單指定 variable_name 具有 DIMENSION 屬性。

給定 variable_name 或程序指標名稱只能在範圍設定單元內的所有共用區塊物件清單中出現一次。 無法透過使用關聯來存取其名稱。

如果 object 是衍生類型,則它必須是序列衍生類型。 給定排序結構,其中所有最終元件都是非指標,且都是字元類型或所有類型預設整數、預設實數、預設複數、預設邏輯或倍精準度實數,則會將結構視為直接在共用區塊中列舉其元件。

相關聯儲存體的資料指標應該延遲相同的類型參數。 此外,共用區塊中的資料指標物件只能與相同類型、類型參數及等級的指標相關聯儲存。

具有 TARGET 屬性之共用區塊中的物件可以是與另一個物件相關聯的儲存體。 該物件必須具有 TARGET 屬性,且具有相同的類型及類型參數。

類型為 BYTE 的指標可以是與類型為 INTEGER(1)LOGICAL(1)的指標相關聯的儲存體。 如果您指定 -qintlog 編譯器選項,則相同長度的整數和邏輯指標可以是相關聯的儲存體。

程序指標只能是與另一個程序指標相關聯的儲存體; 這兩個介面必須是明確或隱含的。 如果兩個介面都明確,則它們的性質必須相同。 如果這兩個介面都是隱含的,則兩者都必須是子常式,或兩者都必須是具有相同類型及類型參數的函數。

如果您指定 common_block_name,則後面的 object_list 中指定的所有變數都會宣告為該具名共用區塊中。 如果您省略 common_block_name,則您在 object_list 中指定的所有變數都會在空白共用區塊中。

在範圍設定單元內,共用區塊名稱可以在相同或不同的 COMMON 陳述式中出現多次。 相同共用區塊名稱的每一個連續出現都會繼續該名稱指定的共用區塊。 一般區塊名稱是廣域實體。

共用區塊中的變數可以有不同的資料類型。 您可以在相同的共用區塊中混合字元及非字元資料類型。 共同區塊中的變數名稱只能出現在範圍設定單元中的一個 COMMON 陳述式中,而且您不能在相同的 COMMON 陳述式內複製它們。

如需 BIND 資訊,請參閱 共用區塊的交互作業能力

依預設,共用區塊在執行緒之間共用,因此如果共用區塊中的任何儲存單元需要由多個執行緒更新,或由一個執行緒更新並由另一個執行緒參照,則使用 COMMON 陳述式不安全。 若要確保您的應用程式以安全執行緒方式使用 COMMON ,您必須使用鎖定來序列化對資料的存取權,或確保共用區塊位於每一個執行緒的本端。 Pthreads 程式庫模組提供 mutexes ,可讓您使用鎖定來序列化對資料的存取權。 如需相關資訊,請參閱 Pthreads Library Module CRITICAL 指引上的 lock_name 屬性也提供序列化資料存取權的能力。 如需相關資訊,請參閱 CRITICAL/END CRITICALTHREADLOCALTHREADPRIVATE 指引可確保共用區塊位於每一個執行緒的本端。 如需相關資訊,請參閱 THREADLOCALTHREADPRIVATE