看板 C_and_CPP 關於我們 聯絡資訊
我記得書上是寫說 在函示前面加上static表示這個函示只能在這個cpp檔裡被呼叫 例如 A.cpp static void FuncA() { ... } 則這個FuncA()就只能在A.cpp內被使用,其他cpp檔內是不能呼叫FuncA()的 但是我後來想一想 如果一開始就不要在A.h這個header檔內宣告函示的定義的話 不是也能達到這個目的嗎? 請問是我對這個static的功用有所誤解,還是另有其他目的呢? -- 世界上最難發現的 是遺落在沙漠中的一根針? 世界上最難發現的 是黑夜裡落下的烏鴉羽毛? 世界上最難發現的 是自己的誤解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.139.157
HudsonE:叫別人小心一點不要使用這個 func 不也能達到這個目的嗎? 02/13 16:09
ledia:link 的時候會 multiple definition 02/13 16:12
ledia:(如果撞名而兩邊又都沒有宣告 static 的話) 02/13 16:13
ledia:有時候是既有的 library 之間的問題, 設計時要想清楚 02/13 16:14
firose:如果 .h 不放的話, 仍然不能防範, 只要有人不小心寫出 02/13 17:31
firose:extern void funA() 一樣可以使用 02/13 17:31
firose:加 static 表示 internal-linkage 不加表示 external-linka 02/13 17:32