1. 程式人生 > >C語言的宣告與定義

C語言的宣告與定義

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裡面會再次引用定義,依然造成重定義的問題。