看板 Programming 關於我們 聯絡資訊
※ 引述《leslieha (懂的付出才會幸福)》之銘言: : 目前在開發軟體上 : 有遇到一個問題 : 開發語言為 C : 變數型態大多使用 long short char等 : 專案開發上一旦遇到換 IDE 移植專案時 : 有些 IDE 會自訂一些變數型態 : 例如 : bool, Bool, BOOL : true, TRUE : 為避免上述問題 : 自己是不使用 boolean, 改用 char 大部分你用到bool這樣的變數型態時,只要用int就可以了 因為一個int代表的就是一個register 即使你用char,他在進行代數運算或是邏輯比對的時候 還是會做integer promotion 被載入到一個register裡面處理 所以除非你要「儲存」你的bool到一個記憶體中 不然使用int是最直接的(事實上,編譯器可能會直接幫你檢查,並把它變成int) : 但有時遇到 unsigned long : 就會有 uint32_t, uint32t, UNIT32_T, UINT32T 這幾種 : 目前自己本身的解決方法是 : 開一個 MyTypeDef.h : 自己 typedef 變數型態 : 但有時 typdef 的變數型態的名稱 : 就有可能會與 IDE 自訂的發生 redefine的問題 嗯,請不要自己定義header C99就有stdint.h的這個規範 M$老愛背離規範比較麻煩,但也有解: Stack overflow: http://0rz.tw/LYsN3 stdint.h for M$ http://msinttypes.googlecode.com/svn/trunk/stdint.h 關於C的整數型別及integer promotion 小弟我有寫過兩篇專文討論,有興趣的話也可以看看 http://www.idryman.org/blog/2012/12/03/the-design-of-c-integer-types/ http://www.idryman.org/blog/2012/11/21/integer-promotion/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 207.151.58.224
leslieha:怕有些IDE沒支援C99, 逼自己只用C89 60.251.160.66 02/05 11:01
leslieha:你提醒我int是一個register 60.251.160.66 02/05 11:03
leslieha:這樣應該會比用char還快一點.....吧? 60.251.160.66 02/05 11:04
leslieha:上面推文怎麼會變反白了 @@ 60.251.160.66 02/05 11:04
dryman:有開optimizer一般都會把它優化掉 68.181.4.88 02/06 09:59
dryman:其實,唯一沒有支援的IDE就是微軟的 68.181.4.88 02/06 09:59
dryman:他們只想推動C++,不想理C 68.181.4.88 02/06 10:00