[問題] extern的問題

看板C_and_CPP (C/C++)作者 (劉鴻明)時間16年前 (2009/07/30 04:49), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/1
不好意思.... 我有一個程式想試著用跨檔案extern外部全域變數的方式來實現.... 假設我有兩個文檔在同一專案下....externtest.h與externtest2.cpp.... 首先我在.h檔定義以下全域變數: //externtest.h int data=1; struct x{int a; float b}; typedef struct x X_str; X_str xs; //---------------------------- //externtest2.cpp extern int data; //ok extern X_str xs //error, X_str 不是一個type . . . . . //----------------------------------------- 請問為何自定義的資料形態不能透過extern的方式延長變數xs的視野範圍??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.22.36

07/30 05:16, , 1F
.h 不能放定義,還有你的 .cpp 沒有 include .h。
07/30 05:16, 1F

07/30 09:58, , 2F
假設專案中有兩個檔案a.cpp與b.cpp, b.cpp中在global
07/30 09:58, 2F

07/30 09:59, , 3F
scope的變數, 只用在a.cpp中加上extern就可以用了
07/30 09:59, 3F

07/30 09:59, , 4F
例如b.cpp中有int a = 5; a.cpp中就寫extern int a;
07/30 09:59, 4F

07/30 10:00, , 5F
這樣a.cpp就可以用到b.cpp中的int a
07/30 10:00, 5F

07/30 10:01, , 6F
假設b.cpp中的int a不想給任何人用到, 就加上static
07/30 10:01, 6F

07/30 10:02, , 7F
我的感覺是extern應該放在header, 假設a.cpp想要用到
07/30 10:02, 7F

07/30 10:03, , 8F
b.cpp中的變數, 就include b.h就好了
07/30 10:03, 8F

07/30 10:05, , 9F
我的第二行有錯字, "只用在" ==> "只要在"
07/30 10:05, 9F

07/30 15:18, , 10F
題外話, 在global variable加static是C的寫法
07/30 15:18, 10F

07/30 15:19, , 11F
C++用unnamed namespace
07/30 15:19, 11F
文章代碼(AID): #1ASBNAZg (C_and_CPP)
文章代碼(AID): #1ASBNAZg (C_and_CPP)