看板 C_and_CPP 關於我們 聯絡資訊
請教一個問題,若有一個變數,我希望每個C檔都可以使用 只能定義在某個C中,其它C檔定義成EXTERN嗎? 有沒有其它寫法呢? 因為我想將某個變數區塊定義,不想要使用函式時都要當引數輸入 所以想寫成全域變數,使用者可以自己改名,寫成H檔 再#INCLUDE進來 但感覺好像怪怪的,請問大家都怎麼寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.58.180 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440678200.A.10E.html
Feis: 當引數輸入有甚麼不好? 08/27 20:31
qeagle: 因為引數已經夠多了,而且理論上這個函式也只能對此變數操 08/27 20:48
qeagle: 做,卻又把它當引數丟進去,怎麼想都覺得怪 08/27 20:49
Feis: 引數過多就是要包一包阿. 我是不覺得哪裡怪 08/27 21:35
EdisonX: 以前我是把所有的 global extern 放在一、二個 .h,有用 08/27 22:26
EdisonX: 到的再 include .h , 定義放在 .cpp,所以就有了global.h 08/27 22:27
EdisonX: 和 global.cpp , 然後等到哪天發現了 .h / .cpp 的變數多 08/27 22:27
EdisonX: 到爆、想殺人、非常亂的時候,就會想再把這些東西塞回各自 08/27 22:28
EdisonX: 回歸的地方。只要這份 code 不是你一個人寫的 , 就會遇到 08/27 22:28
EdisonX: 一樣的問題,然後後面接手的人會愈加愈多,愈改愈亂。 08/27 22:28
qeagle: 我就是要寫個函式庫.C給別人...所以不知怎麼完,自己寫自 08/27 22:38
qeagle: 已亂命名都行,寫給別人,他要都CALL得到,不知道怎麼寫 08/27 22:40
EdisonX: 給別人用的話玩法就真的很多種了, 不過讓別人看到 global 08/27 23:10
EdisonX: variable 就不太好,隨時都會亂改。 08/27 23:10
cobrasgo: 我建議用個wrapper包起來,回傳這個變數 09/02 16:31
cobrasgo: 你在wrapper裡做該有的保護 09/02 16:32
cobrasgo: 我打錯,不是回傳這個變數,是提供setxxx這種wrapper 09/02 16:33