最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言中結(jié)構(gòu)體封裝全局變量用法說明

 更新時間:2024年08月21日 08:48:14   作者:依然耀眼  
這篇文章主要介紹了C語言中結(jié)構(gòu)體封裝全局變量用法說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

C語言結(jié)構(gòu)體封裝全局變量

typedef	struct	global_data {
	bd_t		*bd;
	unsigned long	flags;
	unsigned long	baudrate;
	unsigned long	have_console;	
	unsigned long	reloc_off;	
	unsigned long	env_addr;	
	unsigned long	env_valid;	
	unsigned long	fb_base;	
#ifdef CONFIG_VFD
	unsigned char	vfd_type;	
#endif
#if 0
	unsigned long	cpu_clk;	
	unsigned long	bus_clk;
	phys_size_t	ram_size;	
	unsigned long	reset_status;	
#endif
	void		**jt;		
} gd_t;


#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8") 
//定義了一個要放在寄存器r8中的全局變量,名字叫g(shù)d,類型是一個指向gd_t類型變量的指針
//這個gd在程序中經(jīng)常被訪問,因此放在register當(dāng)中提升效率

	ulong gd_base;
	gd_base = CFG_UBOOT_BASE + CFG_UBOOT_SIZE - CFG_MALLOC_LEN - CFG_STACK_SIZE - sizeof(gd_t)
	gd = (gd_t*)gd_base; //強制類型轉(zhuǎn)換,分配基地址

C語言全局變量定義與聲明技巧

在實際的編程中,全局變量對我們編程來說既是喜又是淚,雖然說項目中盡量避免使用全局變量,但總有些時候不得不使用它,并且可能使用得不少,各個模塊可能有含有或多或少的幾個全局變量,而當(dāng)別的模塊需要引用的時候,就必須extern它,造成你定義了一遍又聲明了一遍,這樣就稍顯得麻煩。

下面介紹一種全局變量的管理方法,至始至終只定義一次,所有的全局變量以某種聲明方式放入一個名叫g(shù)lobal.h的頭文件中,然后別的模塊include它就OK。

那么如何操作呢?

這里還要新建一個同名的global.c源文件,用來定義所有全局變量,注意這里并不是手工一個一個定義,而是采用預(yù)處理方式,廢話少說見下面程序

  • global.h
#ifdef GLOBAL_VAR
#define GLOBAL_EXTERN

#else
#define GLOBAL_EXTERN extern
#endif

GLOBAL_EXTERN int g_var1;
GLOBAL_EXTERN int g_var2;
  • global.c
#define GLOBAL_VAR
#include "global.h"
#undef GLOBAL_VAR

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux下用Valgrind做檢查(防止內(nèi)存泄露)

    Linux下用Valgrind做檢查(防止內(nèi)存泄露)

    Valgrind是一款基于模擬linux下的程序調(diào)試器和剖析器的軟件套件,可以運行于x86, amd64和ppc32架構(gòu)上。valgrind包含一個核心,它提供一個虛擬的CPU運行程序,還有一系列的工具,它們完成調(diào)試,剖析和一些類似的任務(wù)
    2014-01-01
  • C++中單鏈表的建立與基本操作

    C++中單鏈表的建立與基本操作

    以下是對C++中單鏈表的建立與基本操作進行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 你真的知道C++對象大小嗎?

    你真的知道C++對象大小嗎?

    這篇文章主要給大家介紹了關(guān)于C++對象大小的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)

    json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)

    下面小編就為大家?guī)硪黄猨son格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++缺省參數(shù)、函數(shù)重載與引用深入解析

    C++缺省參數(shù)、函數(shù)重載與引用深入解析

    缺省參數(shù)函數(shù)重載以及引用的出現(xiàn)是為了補充C語言語法的不足以及對C語言設(shè)計不合理的地方進行優(yōu)化,引用的出現(xiàn)大大降低了我們學(xué)習(xí)C語言時相對于指針的難度,也便于我們更好的理解和使用,感興趣的朋友一起看看吧
    2024-04-04
  • C++淺析內(nèi)聯(lián)函數(shù)的使用

    C++淺析內(nèi)聯(lián)函數(shù)的使用

    為了消除函數(shù)調(diào)用的時空開銷,C++ 提供一種提高效率的方法,即在編譯時將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言中的宏展開。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)
    2022-05-05
  • C語言實現(xiàn)俄羅斯方塊課程設(shè)計

    C語言實現(xiàn)俄羅斯方塊課程設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)俄羅斯方塊課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++中動態(tài)內(nèi)存管理的實現(xiàn)

    C++中動態(tài)內(nèi)存管理的實現(xiàn)

    本文主要介紹了C++中動態(tài)內(nèi)存管理的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • C++小練習(xí)之高性能實現(xiàn)字符串分割

    C++小練習(xí)之高性能實現(xiàn)字符串分割

    字符串分割是日常工作中比較常見的基礎(chǔ)函數(shù),通常大家會使用現(xiàn)成的基礎(chǔ)庫,基礎(chǔ)庫的性能是否是最佳的,本文主要和大家探討一下如何最大限度的提升字符串分割的性能,希望對大家有所幫助
    2023-10-10
  • C++中的數(shù)據(jù)對齊示例詳解

    C++中的數(shù)據(jù)對齊示例詳解

    這篇文章主要介紹了C++中數(shù)據(jù)對齊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論

莱阳市| 石渠县| 西宁市| 天气| 建德市| 罗源县| 汉源县| 平泉县| 涟水县| 莱芜市| 墨玉县| 彰化县| 武清区| 枣强县| 巴彦淖尔市| 无锡市| 新兴县| 洛南县| 蓬安县| 大竹县| 湖南省| 仁寿县| 奉贤区| 静宁县| 安化县| 沧州市| 桃江县| 营口市| 从江县| 公主岭市| 江都市| 佛坪县| 田阳县| 平和县| 彭阳县| 广南县| 甘南县| 大足县| 历史| 平阴县| 元阳县|