程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 如何在C++Builder中使用全局變量

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

編輯:vc教程

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

作者:yifei(尹加俊)

信?a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="eb0f485192828d8e82dad2dbdbabdaddd8c5888486">[email protected]

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

(1).如果我在一個公用的頭文件中定義一個變量,在其它單元中可以直接使用它嗎?如下:

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

答案是:或許可以吧。你得到的結果是:只要你引用了這個頭文件N次,那麼就會得到N+1次編譯器警告,選擇你這個變量重復定義,在你引用這個變量的單元中,確實可以使用這個變量,但是在一個單元中對它賦值,在另一個單元中確得不麼,也就是說,它根本就不是全局的,編譯器的處理方法是,在每個單元中重新以這個名稱聲明了一個變量而已。

(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關鍵字,來聲明這個變量是外部的,所以,在需要使用這個全局變量的單元中,使用extern AnsiString FileName就可以引用一例中的全局變量了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved