C語言的宣告與定義

2021-07-08 17:39:46 字數 642 閱讀 7238

keil的專案中,遇到呼叫其他c檔案函式和變數的情況:

對於函式,在a.c下面進行編寫,之後在a.h下面進行宣告,其他檔案包含a.h即可呼叫。

對於變數,在a.c下面進行定義,在a.h下面也要進行一下宣告,其他檔案使用此變數時,包含a.h即可使用。

關於變數的定義與宣告

變數定義即為變數分配儲存空間,也可以為其指定初始值,例如int i;internal i=0;在程式中的變數必須有且僅有乙個定義。

變數的宣告即表明已經存在某型別的變數,在a.h下面extern int i;其它檔案包含a.h的時候,遇到i的宣告即可進行對其呼叫。

可以把宣告理解為弱化的定義,如果這樣宣告:extern int i=0;即相當於乙個定義(非常規),再次進行定義int i=0;即被認為重定義。好的程式設計習慣即把定義與宣告進行分離,標頭檔案進行宣告,原始檔進行定義,多個檔案呼叫同一變數時包含標頭檔案即可。

關於#ifndef

預編譯命令,無法解決變數重定義的問題。

c.c檔案下:

#include "a.h"(a.c裡面有c.h)

#include "b.h"(b.h裡面有c.h)

有預編譯命令,則c.h被包含一次,即c.c被呼叫一次。如果c.h裡面有變數的定義,則c.c裡面會再次引用定義,依然造成重定義的問題。

C語言的定義與宣告

1.變數的定義 宣告 變數的宣告有兩種情況 1 一種是需要建立儲存空間的。例如 int a 在宣告的時候就已經建立了儲存空間。2 另一種是不需要建立儲存空間的。例如 extern int a 其中變數a是在別的檔案中定義的。前者是 定義性宣告 defining declaration 或者稱為 定義...

C語言宣告與定義

很久沒接觸c語言了,今天遇到宣告與定義的問題,於是找到下面的解釋 宣告 declaration 指定了乙個變數的識別符號,用來描述變數的型別,是型別還是物件,或者函式等。宣告,用於編譯器 compiler 識別變數名所引用的實體。以下這些就是宣告 extern int bar extern int ...

C語言解惑「定義」 與 「宣告」

所謂的定義就是 編譯器 建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說的變數名或物件名。但注意,這個名字一旦和這塊記憶體匹配起來,它們就同生共死,終生不離不棄。並且這塊記憶體的位置也不能被改變。乙個變數或物件在一定的區域內 比如函式內,全域性等 只能被定義一次,如...