日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

如何在C++Builder中使用全局变量

發(fā)布時間:2025/3/15 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在C++Builder中使用全局变量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如何在C++Builder中使用全局變量

關(guān)鍵字:C++Builder,全局變量

作者:yifei(逸飛)? ? 更新:2005-09-14? ? 瀏覽:13665

本文詳細(xì)解釋了如何在C++Builder中使用全局變量。

作者:yifei(尹加俊)
信箱:yifei1900@163.com

  如何在C++Builder中使用全局變量?
  (1).如果我在一個公用的頭文件中定義一個變量,在其它單元中可以直接使用它嗎?如下:
  //--------------------------------Globals.h----------------------------------
  #ifndef GlobalsH
  #define GlobalsH
  //---------------------------------------------------------------------------
  #include <Classes.hpp>
  //---------------------------------------------------------------------------
  AnsiString UserName;
  //---------------------------------------------------------------------------
  #endif
  答案是:或許可以吧。你得到的結(jié)果是:只要你引用了這個頭文件N次,那么就會得到N+1次編譯器警告,選擇你這個變量重復(fù)定義,在你引用這個變量的單元中,確實可以使用這個變量,但是在一個單元中對它賦值,在另一個單元中確得不么,也就是說,它根本就不是全局的,編譯器的處理方法是,在每個單元中重新以這個名稱聲明了一個變量而已。

  (2).如果我在工程文件.cpp中聲明一個變量,在其它單元中可以直接使用它嗎?如下:
  //---------------------------------------------------------------------------
  #include <vcl.h>
  #pragma hdrstop
  //---------------------------------------------------------------------------
  USEFORM("TMainForm.cpp", MainForm);
  //---------------------------------------------------------------------------
  AnsiString UserName;
  //---------------------------------------------------------------------------
  WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  {
  ????try
  ????{
  ?????????Application->Initialize();
  ?????????Application->CreateForm(__classid(TMainForm), &MainForm);
    ?????Application->Run();
  ????}
  ????catch ... //這里省略了一部分
  ????return 0;
  }
  //---------------------------------------------------------------------------
  答案是:不可以。但是這確實是定義全局變量的正確方法之一。在工程文件.cpp中聲明了變量,如果想在其它單元中使用它,必須使用extern關(guān)鍵字,來聲明這個變量是外部的,所以,在需要使用這個全局變量的單元中,使用extern AnsiString FileName就可以引用一例中的全局變量了。
// 本文轉(zhuǎn)自 C++Builder研究 - http://www.ccrun.com/article.asp?i=626&d=wph422
  (3).在VCL架構(gòu)的程序中,我們經(jīng)常用到一些全局變量,你有沒有意識到呢?Application、Screen、IsConsole、IsLibray...等都是應(yīng)用程序級的全局變量,如果想了解更多,請參照VCL手冊的application-level information有關(guān)的章節(jié)。那么,這些全局變量是如何定義的呢?
  我們揭開VCL的迷霧,直接去查看VCL的代碼(C++Builder中無法直接看到.pas的源代碼,但是編譯器為每個.pas文件生成了一個.hpp的頭文件引用,看看其中的變量和函數(shù)聲明即可):在程序空白處輸入Application,按住Ctrl鍵,再點擊它,我們就找到了Application變量的原始定義,如下:
  //-- var, const, procedure ---------------------------------------------------
  extern PACKAGE TApplication* Application; //請看這里
  extern PACKAGE TScreen* Screen;
  extern PACKAGE void *Ctl3DBtnWndProc;
  原來VCL擴展了extern關(guān)鍵字,在.h或.hpp頭文件用extern PACKAGE來輸出本來在.cpp和.pas單元中定義的變量,使之成為全局變量,因此,我們得到了第三種聲明全局變量的方法:使用extern PACKAGE關(guān)鍵字,如下,輸出一個全局變量:
  //-----------------------------Globals.cpp-----------------------------------
  #pragma hdrstop


  #include "Globals.h"
  //---------------------------------------------------------------------------
  #pragma package(smart_init)
  //---------------------------------------------------------------------------
  AnsiString UserName = "YinJiajun";
  //---------------------------------------------------------------------------


  //-----------------------------Globals.h-------------------------------------
  #ifndef GlobalsH
  #define GlobalsH
  //---------------------------------------------------------------------------
  #include <Classes.hpp>
  //---------------------------------------------------------------------------
  extern PACKAGE AnsiString UserName;
  //---------------------------------------------------------------------------
  #endif


  后記:大蝦們都告訴我們,不要使用太多的全局變量,不要使用goto......于是,當(dāng)你寫程序時,總是有這樣的聲明在我們腦中回響:“不要使用太多的全局變量,不要使用goto......”。為什么不要使用這些東西?因為難以駕馭。如果你已劍氣合一,是否還有這樣的顧慮?
  刀可以用來切菜,也可以用來殺人,不能因為刀能殺人而禁止用刀。
  如果使用全局變量能讓你的程序簡潔明了、可讀性好,為什么不用?
  為什么這些現(xiàn)代程序設(shè)計語言仍然要支持goto和全局變量?

總結(jié)

以上是生活随笔為你收集整理的如何在C++Builder中使用全局变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰公开免费 | 在线免费黄网 | 国产精品毛片在线 | 色偷偷免费视频 | 噜噜噜久久,亚洲精品国产品 | 亚洲视频精品在线观看 | 久久精品久久久久久 | 粗大的内捧猛烈进出在线视频 | 日韩成年人视频 | 日韩av色图 | 欧美日韩影院 | 久久精品天天中文字幕人妻 | 麻豆蜜桃91 | 国产精品网站在线 | 精品九九九 | 啪啪自拍视频 | 色五丁香 | 亚洲精品乱码久久久久久不卡 | 99久久久无码国产 | 人人cao | 国产又粗又长又黄的视频 | 九九亚洲精品 | 隔壁邻居是巨爆乳寡妇 | 中文字幕在线观看一区二区 | 日本一级淫片免费放 | 另类av在线 | 成人中文网 | 成人交配视频 | 青青草成人免费视频 | 丰满大乳露双乳呻吟 | 久久作爱 | 91热热 | 日韩专区av| 夜夜操操操| 亚洲a人 | 国产成人三级一区二区在线观看一 | 污漫网站 | 国产成人超碰人人澡人人澡 | 亚洲一区网 | 国产精品久久久久久久久久东京 | 精品久久久无码中文字幕 | 九色porn | 久久噜噜色综合一区二区 | 精品在线视频免费观看 | 国产在线网址 | 国产成人精品一区二 | 日韩精品一区二区三区四区 | gai视频在线观看资源 | 91精品久久香蕉国产线看观看 | 色噜噜狠狠狠综合曰曰曰 | 性猛交富婆╳xxx乱大交天津 | 歪歪视频在线观看 | 国产黑人 | 国产成人久久婷婷精品流白浆 | 国产成人精品aa毛片 | 久久福利小视频 | 亚洲午夜精品一区二区三区他趣 | 亚洲在线视频网站 | 激情综合网激情 | 看全色黄大色黄大片大学生 | www九色 | 亚洲不卡av一区二区 | 不卡在线播放 | 久久久激情网 | 91麻豆映画传媒 | 亚洲视频1区 | 亚洲视频精品在线 | 9999免费视频 | 无码av免费毛片一区二区 | 污视频软件在线观看 | 国产精品久久国产精品99 | 性一区 | 人妻无码久久精品人妻 | 蜜臀av一区 | 国产欧美在线视频 | 日日摸日日碰夜夜爽av | 国产色视频一区二区三区qq号 | 欧美日韩精品一区 | 青青草视频播放 | 免费观看一区二区三区 | 国产激情自拍视频 | 久久久午夜精品福利内容 | 久久精品福利视频 | 日韩一区二区在线观看视频 | 老子影院午夜精品无码 | 丝袜脚交免费网站xx | 钰慧的mv视频在线观看 | 黄色一级片国产 | 欧美日韩123 | 黄色片视频免费在线观看 | 91激情网 | 337p嫩模大胆色肉噜噜噜 | 久艹在线观看视频 | 欧美日韩加勒比 | 青青草日韩 | 亚洲经典视频 | 性高潮网站 | 免费jizz| 国产日产精品一区二区三区 |