欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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當中提升效率

	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語言全局變量定義與聲明技巧

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

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

那么如何操作呢?

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

  • 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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 深入理解C++ 空類大小

    深入理解C++ 空類大小

    本文主要介紹了C++ 空類大小,規(guī)定空類大小為1字節(jié),主要是為了保證對象的唯一性和可區(qū)分性,滿足數(shù)組元素地址連續(xù)的要求,下面就來了解一下
    2025-01-01
  • C++?二叉樹的實現(xiàn)超詳細解析

    C++?二叉樹的實現(xiàn)超詳細解析

    二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結(jié)構(gòu)。本文將詳細介紹一下C++中二叉樹的實現(xiàn)和遍歷,需要的可以參考一下
    2022-03-03
  • C++11/14如何使用typedef和using定義類型別名和別名模版

    C++11/14如何使用typedef和using定義類型別名和別名模版

    這篇文章主要介紹了C++11/14如何使用typedef和using定義類型別名和別名模版
    2023-04-04
  • Linux網(wǎng)絡編程之UDP Socket程序示例

    Linux網(wǎng)絡編程之UDP Socket程序示例

    這篇文章主要介紹了Linux網(wǎng)絡編程之UDP Socket程序示例,有助于讀者在實踐中掌握UDP協(xié)議的原理及應用方法,需要的朋友可以參考下
    2014-08-08
  • C++鍵盤記錄程序代碼

    C++鍵盤記錄程序代碼

    這篇文章主要介紹了C++鍵盤記錄程序代碼,是Windows應用程序開發(fā)中非常實用的功能,該功能也常被一些遠程操控程序所實用,需要的朋友可以參考下
    2014-10-10
  • c++中string類型和int類型相互轉(zhuǎn)換的幾種常用方法

    c++中string類型和int類型相互轉(zhuǎn)換的幾種常用方法

    我們在編寫程序時,經(jīng)常涉及到int與string之間的類型轉(zhuǎn)換,本文主要介紹了c++中string類型和int類型相互轉(zhuǎn)換的幾種常用方法,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 一文詳細講解C++精妙的哈希算法

    一文詳細講解C++精妙的哈希算法

    這篇文章主要介紹了C++精妙的哈希算法的相關資料,哈希結(jié)構(gòu)通過哈希函數(shù)將關鍵碼映射到表中的特定位置,以提高搜索效率,理想的哈希函數(shù)應保證一致性、哈希值均勻分布、高計算效率與最小化沖突,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • C++編程中將引用類型作為函數(shù)參數(shù)的方法指南

    C++編程中將引用類型作為函數(shù)參數(shù)的方法指南

    這篇文章主要介紹了C++編程中將引用類型作為函數(shù)參數(shù)的方法指南,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言正則表達式操作示例

    C語言正則表達式操作示例

    這篇文章主要介紹了C語言正則表達式操作,結(jié)合實例形式分析了C語言正則匹配類似郵箱格式功能的實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 如何正確的使用語句塊

    如何正確的使用語句塊

    本篇文章是對正確使用語句塊進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論