[問題] 如何把程式碼 int 全部換成 long

看板C_and_CPP作者 (mself)時間12年前 (2011/11/20 21:41), 編輯推噓0(0015)
留言15則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 有一個程式,是 32-bit 環境下開發的,規模大概幾十個 .c .h 我希望把所有的 int (32bit) 換成 long (64bit) 讓程式不會受到 int32 最大值的限制 目前想到的方法,是用 sed 把所有的 .c .h 裡的 "int " 換成 "long " 這類的方法 (還沒測試,不確定會不會 work,畢竟 sed 不是 parser 不會認語法) 不曉得有沒有更好的方法? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.12.80

11/20 21:44, , 1F
#undef int #define int long 某些環境上兩者是一樣
11/20 21:44, 1F

11/20 21:45, , 2F
的, 請愛用 <stdint> 底下的 intN_t 來定義變數, 才會
11/20 21:45, 2F

11/20 21:45, , 3F
有明確的型別大小, 善用 typedef 讓你的程式碼既有足
11/20 21:45, 3F

11/20 21:46, , 4F
夠抽象化且好修改, 反正簡單一句就是"消藍字就對了"
11/20 21:46, 4F

11/20 21:52, , 5F
感謝~ 請問這個方法有 C/C++ 程式之分嗎?
11/20 21:52, 5F

11/20 21:53, , 6F
我的 case 是 C, 用 gcc 編
11/20 21:53, 6F

11/20 21:56, , 7F
是 <stdint.h> 才對 ~"~ 這方法只是利用前處理器的指
11/20 21:56, 7F

11/20 21:56, , 8F
令而已, C 語言也可
11/20 21:56, 8F
謝謝~~所以 套用在既有的程式上,就在每個 .c .h 最開頭加上兩行: #undef int #define int long 此外,能不能多請教一下"消藍字"的意思~ :) ※ 編輯: mself 來自: 211.74.12.80 (11/20 22:01)

11/20 22:13, , 9F
int float 這種散布在程式中的 keyword 會讓你改實作
11/20 22:13, 9F

11/20 22:14, , 10F
很難改, 局部改的話會比較花時間
11/20 22:14, 10F

11/20 22:21, , 11F
這樣寫出來的程式不太portable...
11/20 22:21, 11F

11/20 22:22, , 12F
我指原po的方式
11/20 22:22, 12F

11/20 22:54, , 13F
大的話, 我都自己用 typedef int i32; 所以一堆數字 XD
11/20 22:54, 13F

11/21 20:06, , 14F
謝啦~
11/21 20:06, 14F

11/21 22:53, , 15F
sed 是有辦法指定 int 是一個獨立單字而不是字的一部分。
11/21 22:53, 15F
文章代碼(AID): #1EoGE3YH (C_and_CPP)
文章代碼(AID): #1EoGE3YH (C_and_CPP)