看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux + gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這應該是基本問題,不過我google不到,所以請各位指教 若一個程式包含兩檔案:func.c, main.c main.c : int main(void) { int i; for (i=0; i<100000; ++i) test(); return 0; } func.c : 這個檔案含有函式 test() 寫法1 : void test(void) { int i; for (i=0; i<10000000; ++i) { ........(這邊跟i有關不重要) } } 寫法2: static int i ; // (這邊如果沒用static會不會跟main.c的i有互相干擾的問題?) void test(void) { for (i=0; i<10000000; ++i) { ........(這邊跟i有關不重要) } } 請問這兩種寫法哪種比較好? 把常用變數的reference留在同樣位子會不會比一直宣告清除來的好? 謝謝 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 86.200.195.25 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445006082.A.2EB.html
stupid0319: static 不是都寫在含數內的嗎XD= =? 10/16 23:17
LPH66: 如果真的是那麼時常呼叫的話, 區域變數多半會在相近的位置 10/16 23:18
LPH66: 就算稍有不同, 記憶體快取都是一個區塊為主 10/16 23:18
LPH66: 因此不會有太頻繁的 cache miss 10/16 23:19
LPH66: 所以就放心宣告區域變數吧 10/16 23:19
Bencrie: static 寫在 global 表示不匯出。其他 source 看不到 10/17 01:27
wtchen: 感謝 10/17 02:35
EdisonX: 如果這個func未來被多行緒呼叫時,static宣告的會死很慘 10/17 09:26
MOONRAKER: i很便宜 不要在小地方那麼摳門好嗎 10/17 14:02
ronin728: 這種寫法沒省多少空間時間,又很危險 10/17 14:42
kobe8112: i很便宜是什麼東西啦XDDD 10/27 15:21