[問題] 可攜程式碼的問題..
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
有點好奇怎麼樣才能寫可攜的程式
但我環境只有vc
以VS 2012 VC來看
x86設定下 我看到size_t的typedef是
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
typedef _W64 unsigned int size_t;
#endif
_W64這個似乎以下面解釋 , 是一個識別用途
http://msdn.microsoft.com/en-us/library/s04b5w00(v=vs.80).aspx
所以在x64的條件下size_t = unsigned __int64
我覺得很疑惑以MSDN這樣描述和以前常常聽到
int, long, or a pointer.
這些size是會跟著平台變得
我可不可以建立觀念說
int 在 64bit環境下 會變 (變成多少 不肯定 也許是8?)
但我自己照著MSDN建立x64環境
sizeof int = 4, long = 4, pointer = 8
好怪 他並不會跟著變....所以上面的觀念是錯誤的嗎??還是看compiler?
而__int64 這種type好像只有VC自己規範的...
所以要寫可攜的程式碼
我可以說
1. 要用無號整數 請用size_t?? (for VC or GCC)
2. 若有號整數 用intptr_t?? (for VC or GCC)
3. 但是又有一個uintptr_t....他跟size_t有語意上的差異嗎?
4. 為啥上面兩個type都有"ptr"這keyword..跟ptr大小相關的int的意思嗎?
5. int32_t這是固定寬度的typedef..整數 , 若上面大觀念沒錯
int 會變動 只有兩種case "變"跟"不變" 那我們是不是程式碼裡面要馬就用
intN_t 和 intptr_t
根本就不該使用int了?
以上許多地方不太了解
請各位指證
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.58.205
推
01/15 12:36, , 1F
01/15 12:36, 1F
→
01/15 12:37, , 2F
01/15 12:37, 2F
→
01/15 12:39, , 3F
01/15 12:39, 3F
→
01/15 12:39, , 4F
01/15 12:39, 4F
→
01/15 12:40, , 5F
01/15 12:40, 5F
→
01/15 12:42, , 6F
01/15 12:42, 6F
→
01/15 12:43, , 7F
01/15 12:43, 7F
→
01/15 12:44, , 8F
01/15 12:44, 8F
→
01/15 15:11, , 9F
01/15 15:11, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章