作者darkhcv (我只想耍廢)
看板C_and_CPP
標題[語法] function前面加static
時間Fri Feb 13 16:02:09 2009
我記得書上是寫說
在函示前面加上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