全域性巨集定義

2021-08-31 04:23:53 字數 1060 閱讀 6898

首先我們要理解定義和宣告的區別,舉個常見的例子,比如有乙個common.c檔案中有這樣一句話

int var = 7;
然後其對應的common.h檔案中有這樣一句:

int var;
那麼上面一句叫做「定義」,下面一句叫「宣告」。

定義為變數分配了儲存空間,而宣告沒有。

宣告可有多處,而定義只能在一處.宣告不能做初始化.

下面是網友的話:

宣告是告訴編譯器「我存在!」。定義是告訴編譯器「我是幹什麼的!」。

就象你去圖書館

宣告:我們圖書館裡有這本書。

定義:書的內容

在ucos2作業系統原始碼中,出現了全域性巨集定義這個東西,雖然初學起來有點困難,一但掌握,寫起程式來會更靈活。

乙個龐大的程式會有不少的全域性變數存在,為了使**整潔,將全域性變數定義在了乙個檔案中,比如在common.c中。

#include "common.h"

int a = 10;

char buf[50] = "china";

a和buf就是全域性變數。在common.h中對兩個變數進行了宣告,如下:

#ifndef common_h_included

#define common_h_included

#define os_common

int a;

char buf[50];

#endif // common_h_included

然後我如果想在main.c檔案中使用他們,怎麼辦,可以直接用extern int a;宣告外部變數,就可以用。也可以#include

「commmon.h」 然後就可以直接用了。在沒有其他檔案的干預下兩種方法都可以,沒有任何問題。但是,如果工程很龐大,main.c包含了若干個(很多個)標頭檔案

#include "a.h"

#include "b.h"

#include "c.h"

#include "d.h"

你知道這些模組中有沒有包含過common.h呢。如果包含了,那麼再extern int a;就會出錯。

QT全域性巨集定義

cmake在cmakelists.txt中新增巨集定義,編譯flags這些資訊 qmake則在pro檔案中定義巨集定義增加 defined use high version 這樣就把use high version定義為了全域性巨集定義 效果等同於cmake中 add definitions dus...

全域性變數及巨集定義

1 巨集名,全域性變數名建議大寫 2 號開頭的都是預處理指令,預處理是發生在預編譯階段 編譯階段之前 對源程式檔案進行一些簡單的文字替換 vc 中編譯按鈕整合了預編譯和編譯的 3 全域性變數的作用域就是從定義處開始,到整個檔案的末尾 include 巨集定義 define pi 3.141592 這...

abs int 巨集定義 巨集定義和巨集方法

巨集定義和巨集方法 定義機型 define is iphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosize cgsizemake 640,1136 uiscreen mainscreen cu...