程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++多文件使用全局變量的方法

c++多文件使用全局變量的方法

編輯:C++入門知識


開始錯誤的做法

在global.h聲明並定義變量

int sharedData = 9;
編譯出錯
Building target: CTest
Invoking: GCC C++ Linker
g++  -o "CTest"  ./src/CTest.o ./src/global.o   
./src/global.o:(.data+0x0): `sharedData'被多次定義
./src/CTest.o:(.data+0x0):第一次在此定義
collect2: 錯誤: ld 返回 1

正確的做法,

在global.h頭文件聲明

extern int sharedData ;


在global.cpp定義初始化

int sharedData = 9;

然後在其他文件直接調用就可以了

int main(void)
{
	cout<

貌似在調用之前聲明一下也可以。

extern int sharedData ;

看一下編譯

make all 
Building file: ../src/CTest.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/CTest.d" -MT"src/CTest.d" -o "src/CTest.o" "../src/CTest.cpp"
Finished building: ../src/CTest.cpp
 
Building file: ../src/global.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/global.d" -MT"src/global.d" -o "src/global.o" "../src/global.cpp"
Finished building: ../src/global.cpp
 
Building target: CTest
Invoking: GCC C++ Linker
g++  -o "CTest"  ./src/CTest.o ./src/global.o   
Finished building target: CTest


第一步

CTest.cpp編譯為CTest.o 此處其實用到了global文件的變量,由於此階段只需要包含頭文件,讓CTest.cpp知道global文件變量的聲明即可。


第二部

global.cpp編譯為global.o


第三部

鏈接CTest.o和global.o ,生成可執行文件CTest。






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