C中怎樣定義和宣告全域性變數和函式最好

2022-08-29 18:24:05 字數 562 閱讀 2002

首先, 儘管乙個全域性變數或函式可以(在多個編譯單元中) 有多處「宣告」, 但是「定義」 卻只能允許出現一次。定義是分配空間並賦初值(如果有) 的宣告。最好的安排是在某個相關的.

c 檔案中定義, 然後在標頭檔案(.h) 中進行外部宣告, 在需要使用的時候, 只要包含對應的標頭檔案即可。定義變數的.

c 檔案也應該包含該標頭檔案, 以便編譯器檢查定義和宣告的一致性。

這條規則提供了高度的可移植性: 它和ansi c 標準一致, 同時也相容大多數ansi 前的編譯器和聯結器。unix 編譯器和聯結器通常使用「通用模式」 允許多重定義, 只要保證最多對一處進行初始化就可以了; ansi c 標準稱這種行為為「公共擴充套件」, 沒有語帶雙關的意思。

可以使用預處理技巧來使類似

define(int, i);

的語句在乙個標頭檔案中只出現一次, 然後根據某個巨集的設定在需要的時候轉化成定義或宣告。但不清楚這樣的麻煩是否值得。

如果希望讓編譯器檢查宣告的一致性, 一定要把全域性宣告放到標頭檔案中。特別是, 永遠不要把外部函式的原型放到.c 檔案中:

通常它與定義的一致性不能得到檢查, 而矛盾的原型比不用還糟糕。

C語言函式和巨集定義

一 目的和要求 1 掌握函式的定義方法和呼叫規則。2 掌握c語言程式中主調函式和被呼叫函式之間進行資料傳遞的規則。3 了解函式的返回值及它的型別,並正確使用它。4 了解區域性變數和全域性變數的作用域及它們與儲存分類的關係,理解變數的存在性和可見性的概念。5 練習遞迴函式的使用。6 理解巨集的概念,掌...

c和c 中const用法總結

const型別定義 指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令 常量必須被初始化 cons的作用 1 可以定義const常量例如 constintmax 100 intarray max 2 便於進行型別檢查例如 voidf constinti 編譯器就會知道i是乙個常量,不允許修...

C和C 中const的用法異同總結

c中const的用法總結起來主要分為以下兩種 1 在定義變數時使用 由於const常量在定義後不能被修改,所以在定義時一定要進行初始化操作 a 最簡單的用法,說明變數為乙個常變數 在以下例子裡,int 和const的先後順序可以改變的,這無所謂 const int a 100 int const b...