[語法] function前面加static

看板C_and_CPP (C/C++)作者 (我只想耍廢)時間16年前 (2009/02/13 16:02), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
我記得書上是寫說 在函示前面加上static表示這個函示只能在這個cpp檔裡被呼叫 例如 A.cpp static void FuncA() { ... } 則這個FuncA()就只能在A.cpp內被使用,其他cpp檔內是不能呼叫FuncA()的 但是我後來想一想 如果一開始就不要在A.h這個header檔內宣告函示的定義的話 不是也能達到這個目的嗎? 請問是我對這個static的功用有所誤解,還是另有其他目的呢? -- 世界上最難發現的 是遺落在沙漠中的一根針? 世界上最難發現的 是黑夜裡落下的烏鴉羽毛? 世界上最難發現的 是自己的誤解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.139.157

02/13 16:09, , 1F
叫別人小心一點不要使用這個 func 不也能達到這個目的嗎?
02/13 16:09, 1F

02/13 16:12, , 2F
link 的時候會 multiple definition
02/13 16:12, 2F

02/13 16:13, , 3F
(如果撞名而兩邊又都沒有宣告 static 的話)
02/13 16:13, 3F

02/13 16:14, , 4F
有時候是既有的 library 之間的問題, 設計時要想清楚
02/13 16:14, 4F

02/13 17:31, , 5F
如果 .h 不放的話, 仍然不能防範, 只要有人不小心寫出
02/13 17:31, 5F

02/13 17:31, , 6F
extern void funA() 一樣可以使用
02/13 17:31, 6F

02/13 17:32, , 7F
加 static 表示 internal-linkage 不加表示 external-linka
02/13 17:32, 7F
文章代碼(AID): #19bIa45w (C_and_CPP)
文章代碼(AID): #19bIa45w (C_and_CPP)