看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
loveme00835:#undef int #define int long 某些環境上兩者是一樣 11/20 21:44
loveme00835:的, 請愛用 <stdint> 底下的 intN_t 來定義變數, 才會 11/20 21:45
loveme00835:有明確的型別大小, 善用 typedef 讓你的程式碼既有足 11/20 21:45
loveme00835:夠抽象化且好修改, 反正簡單一句就是"消藍字就對了" 11/20 21:46
mself:感謝~ 請問這個方法有 C/C++ 程式之分嗎? 11/20 21:52
mself:我的 case 是 C, 用 gcc 編 11/20 21:53
loveme00835:是 <stdint.h> 才對 ~"~ 這方法只是利用前處理器的指 11/20 21:56
loveme00835:令而已, C 語言也可 11/20 21:56
謝謝~~所以 套用在既有的程式上,就在每個 .c .h 最開頭加上兩行: #undef int #define int long 此外,能不能多請教一下"消藍字"的意思~ :) ※ 編輯: mself 來自: 211.74.12.80 (11/20 22:01)
loveme00835:int float 這種散布在程式中的 keyword 會讓你改實作 11/20 22:13
loveme00835:很難改, 局部改的話會比較花時間 11/20 22:14
priv:這樣寫出來的程式不太portable... 11/20 22:21
priv:我指原po的方式 11/20 22:22
tropical72:大的話, 我都自己用 typedef int i32; 所以一堆數字 XD 11/20 22:54
mself:謝啦~ 11/21 20:06
tinlans:sed 是有辦法指定 int 是一個獨立單字而不是字的一部分。 11/21 22:53