青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

colorful

zc qq:1337220912

 

跨平臺開發(fā)連載(6_跨平臺IO的影響因素)

http://blog.csdn.net/wqf363/article/details/1420554

如果你正在寫從文件或網(wǎng)絡(luò)讀寫數(shù)據(jù)的跨平臺C/C++代碼,那么你必須明白有些問題是因語言,編譯器,平臺而不同的。 主要的問題是數(shù)據(jù)對齊,填充類型大小字節(jié)順序默認狀態(tài)char是否有符號
對齊
特定機器上,特定的數(shù)據(jù)被對齊于特定的邊界。如果數(shù)據(jù)沒有正確對齊,結(jié)果可能是效率降低甚至崩潰。 當(dāng)你從I/O源讀取數(shù)據(jù)的時候,確保對齊是正確的。詳細內(nèi)容參考本人另一篇blog: 字節(jié)對齊的影響因素
填充
"填充" 是數(shù)據(jù)集合中不同元素之間的間隔, 一般是為了對齊而存在。不同編譯器和平臺下,填充的數(shù)量可能會不同。 不要假設(shè)結(jié)構(gòu)的大小和成員的位置在任何編譯器和平臺下都是相同的。 不要一次性讀取或者寫入一整個結(jié)構(gòu)體,因為寫入的程序可能會使用和讀取的程序不同的填充方式。對于域也同樣適用。
類型大小
不同數(shù)據(jù)類型的大小隨編譯器和平臺而不同。 在C/C++中, 內(nèi)置類型的大小完全取決于編譯器(在特定范圍內(nèi)). 不要讀寫大小不明確的數(shù)據(jù)類型。也就是說,不要讀寫bool, enum, long, int, short, float, 或者double類型.(譯者注:linux下要使用下面跨平臺符號,要加載頭文件<arpa/inet.h>,此外在C99已經(jīng)增加了一個頭文件stdint.h,支持標(biāo)準(zhǔn)的,可移植的整數(shù)類型集合,此文件被包含在<inttypes.h>)
用這些
替代這些...
int8, uint8
char, signed char, unsigned char, enum, bool
int16, uint16
short, signed short, unsigned short, enum
int32, uint32
int, signed int, unsigned int, long, signed long, unsigned long, enum
int64, uint64
long, signed long, unsigned long
int128, uint128
long long, signed long long, unsigned long long
float32
float
float64
double
 
Data Type Ranges
C/C++ recognizes the types shown in the table below.
Type Name
Bytes
Other Names
Range of Values
int
*
signed,
signed int
System dependent
unsigned int
*
unsigned
System dependent
__int8
1
char,
signed char
–128 to 127
__int16
2
short,
short int,
signed short int
–32,768 to 32,767
__int32
4
signed,
signed int
–2,147,483,648 to 2,147,483,647
__int64
8
none
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
char
1
signed char
–128 to 127
unsigned char
1
none
0 to 255
short
2
short int,
signed short int
–32,768 to 32,767
unsigned short
2
unsigned short int
0 to 65,535
long
4
long int,
signed long int
–2,147,483,648 to 2,147,483,647
unsigned long
4
unsigned long int
0 to 4,294,967,295
enum
*
none
Same as int
float
4
none
3.4E +/- 38 (7 digits)
double
8
none
1.7E +/- 308 (15 digits)
long double
10
none
1.2E +/- 4932 (19 digits)
 
    The long double data type (80-bit, 10-byte precision) is mapped directly to double (64-bit, 8- byte precision) in Windows NT and Windows 95.
    Signed and unsigned are modifiers that can be used with any integral type. The char type is signed by default, but you can specify /J to make it unsigned by default.
    The int and unsigned int types have the size of the system word. This is two bytes (the same as short and unsigned short) in MS-DOS and 16-bit versions of Windows, and 4 bytes in 32-bit operating systems. However, portable code should not depend on the size of int.
    Microsoft C/C++ also features support for sized integer types. See __int8, __int16, __int32, __int64 for more information. Also see Integer Limits.
       此外,顯示個32位與64位平臺之間的差異示例:
對于 Linux on POWERILP 32 模型用于 32 位環(huán)境中,而 LP64 用于 64 位環(huán)境中。這兩種模型之間的區(qū)別在于長整型和指針的大小。
系統(tǒng)中可以有兩種不同的數(shù)據(jù)類型:基本數(shù)據(jù)類型和衍生數(shù)據(jù)類型。
基本數(shù)據(jù)類型是 C C++ 語言規(guī)范定義的所有數(shù)據(jù)類型。下表對 Linux on POWER Solaris 中的基本數(shù)據(jù)類型進行了比較:
4:基本數(shù)據(jù)類型
 
Linux on POWER
Solaris
基本類型
ILP32
LP64
ILP32
LP64
char
8
8
8
8
short
16
16
16
16
init
32
32
32
32
float
32
32
32
32
long
32
64
32
64
pointer
32
64
32
64
long long
64
64
64
64
double
64
64
64
64
long double
64/128*
64/128*
128
128
5. 衍生數(shù)據(jù)類型
OS
gid_t
mode_t
pid_t
uid_t
wint_t
Solaris ILP32 l
long
unsigned long
long
long
long
Solaris LP64
int
unsigned int
int
int
int
Linux ILP32
unsigned int
unsigned int
int
unsigned int
unsigned int
Linux ILP64
unsigned int
unsigned int
int
unsigned int
unsigned int
 
字節(jié)順序
字節(jié)順序,就是字節(jié)在內(nèi)存中存儲的順 序。 不同的處理器存儲多字節(jié)數(shù)據(jù)的順序是不同的。小端處理器由低到高存儲(換句話說,和書寫的順序相反).。大端處理器由高到低存儲(和書寫順序相同)。如果 數(shù)值的字節(jié)順序和讀寫它的處理器不同,它必須被事先轉(zhuǎn)化。同時,為了標(biāo)準(zhǔn)化網(wǎng)絡(luò)傳輸?shù)淖止?jié)順序,定義了網(wǎng)絡(luò)字節(jié)順序。詳細內(nèi)容參考本人另一篇blog:  網(wǎng)絡(luò)通訊中字節(jié)排列順序轉(zhuǎn)化
char - 有符號還是無符號?
一個鮮為人知的事實,char默認可以是有符號的也可以是無符號的-完全取決于編譯器。結(jié)果導(dǎo)致你從char轉(zhuǎn)化為其他類型的時候(比如int),結(jié)果會因編譯器而不同。 例如:

char   x;
int    y;
read( fd, &x, 1 );   // 讀取一個byte值為0xff
y = x;               // y 是 255 或者 -1, 依賴編譯器

不要把數(shù)據(jù)讀入一般的char。明確指定是有符號或者無符號的

posted on 2012-05-19 09:51 多彩人生 閱讀(453) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

統(tǒng)計

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品欧美极品| 亚洲第一黄色网| 亚洲一区二区三区精品视频| 亚洲激情一区二区| 免费看亚洲片| 日韩视频在线观看国产| 亚洲裸体视频| 国产精品v欧美精品v日本精品动漫| 亚洲一区日韩| 亚洲综合另类| 在线观看日韩www视频免费| 欧美mv日韩mv亚洲| 欧美激情第1页| 亚洲男人av电影| 欧美一区综合| 亚洲精品无人区| 亚洲五月婷婷| 在线欧美小视频| 日韩网站在线| 国产在线拍偷自揄拍精品| 亚洲福利精品| 国产精品视频网| 亚洲丶国产丶欧美一区二区三区| 欧美日韩情趣电影| 久久久国产一区二区| 欧美不卡在线视频| 亚洲欧美一区二区视频| 麻豆精品网站| 欧美在线视频免费| 欧美福利视频在线观看| 亚洲欧美日韩国产综合在线| 久久亚洲捆绑美女| 先锋资源久久| 欧美韩国日本一区| 久久嫩草精品久久久久| 欧美日韩国产成人精品| 裸体丰满少妇做受久久99精品| 欧美午夜不卡视频| 欧美成人免费网站| 国产视频欧美| 亚洲一卡久久| 亚洲精品一区二| 久久国产精品一区二区三区| 亚洲午夜视频在线观看| 裸体素人女欧美日韩| 久久久www成人免费毛片麻豆| 欧美黄色精品| 欧美成ee人免费视频| 国产精品一区在线观看| 日韩视频免费在线| 亚洲高清视频中文字幕| 欧美制服第一页| 亚洲午夜久久久| 欧美精品久久天天躁| 欧美大秀在线观看| 国产一区二区三区高清在线观看| 亚洲天堂成人| 99国内精品久久久久久久软件| 老巨人导航500精品| 久久久人成影片一区二区三区| 国产精品久久一区二区三区| 在线视频你懂得一区二区三区| 亚洲精选久久| 欧美激情小视频| 亚洲第一视频| 亚洲伦理在线免费看| 欧美www视频| 欧美激情精品久久久久久久变态| 亚洲二区免费| 免费精品视频| 亚洲国产天堂久久综合| 亚洲人被黑人高潮完整版| 欧美第一黄网免费网站| 亚洲欧洲精品成人久久奇米网 | 亚洲无玛一区| 亚洲女性喷水在线观看一区| 国产精品免费视频观看| 亚洲淫性视频| 欧美一区二区| 国产资源精品在线观看| 久久久精品久久久久| 免费人成网站在线观看欧美高清 | 欧美激情综合亚洲一二区| 亚洲人成在线播放| 亚洲永久在线观看| 国产日韩欧美亚洲| 久久精品二区三区| 亚洲第一精品久久忘忧草社区| 亚洲日本中文| 国产精品久在线观看| 欧美伊人久久| 亚洲高清在线视频| 亚洲欧美日韩在线不卡| 国产在线一区二区三区四区| 久久综合色播五月| 日韩小视频在线观看| 久久精品1区| 最新国产成人在线观看| 国产精品久久久久久福利一牛影视| 欧美怡红院视频| 亚洲国内精品在线| 性欧美暴力猛交另类hd| 亚洲激情在线激情| 国产精品女同互慰在线看| 久久婷婷久久| 亚洲天堂黄色| 亚洲国产成人不卡| 久久av资源网站| 亚洲人体大胆视频| 国产欧美日韩一区二区三区在线| 欧美大片免费观看| 亚洲欧美综合网| 亚洲国产天堂久久综合| 久久免费99精品久久久久久| 一区二区三区欧美在线| 亚洲高清三级视频| 国产精品亚洲综合久久| 欧美了一区在线观看| 久久精品国产欧美亚洲人人爽| 一区二区三区国产| 欧美电影免费观看| 久久久国产精品一区二区中文| 中文欧美字幕免费| 亚洲精品在线观看免费| 亚洲国产精品成人| 国产有码在线一区二区视频| 国产精品久久国产精品99gif| 欧美高清在线视频观看不卡| 久久国产精彩视频| 亚洲综合首页| 亚洲无亚洲人成网站77777| 日韩视频免费观看高清在线视频| 欧美国产日韩xxxxx| 久久人人超碰| 久久久久一区二区| 欧美与黑人午夜性猛交久久久| 亚洲一区二区三区中文字幕| 一区二区久久久久久| 99在线精品视频在线观看| 亚洲黑丝一区二区| 亚洲国产精品v| 在线免费观看一区二区三区| 永久免费视频成人| 黄色在线一区| 狠狠88综合久久久久综合网| 国内精品模特av私拍在线观看| 国产片一区二区| 国产精品一区二区男女羞羞无遮挡 | 夜夜精品视频| 99视频有精品| 一区二区三区欧美日韩| 在线亚洲成人| 午夜日韩在线| 欧美专区中文字幕| 久久久亚洲成人| 裸体一区二区三区| 欧美国产第二页| 欧美日韩美女在线| 欧美日韩国产色综合一二三四| 欧美日韩免费区域视频在线观看| 欧美性片在线观看| 国产精品自拍在线| 国产在线日韩| 亚洲欧洲日产国产综合网| 一区二区三区四区五区视频| 亚洲欧美国产日韩天堂区| 久久av资源网| 欧美本精品男人aⅴ天堂| 91久久极品少妇xxxxⅹ软件| 9i看片成人免费高清| 午夜国产精品视频| 久久久亚洲午夜电影| 欧美激情第4页| 国产精品一区久久久| 在线观看视频一区二区| 一区二区三区日韩精品| 欧美中文字幕在线播放| 欧美成人综合一区| 亚洲图色在线| 蜜臀久久久99精品久久久久久| 欧美四级伦理在线| 影音先锋久久| 亚洲淫性视频| 欧美国内亚洲| 亚洲欧美日韩精品| 欧美α欧美αv大片| 国产色综合久久| 亚洲精品在线观看视频| 欧美在线国产| 亚洲免费成人av电影| 久久午夜电影网| 国产精品久久国产三级国电话系列 | 久久免费99精品久久久久久| 欧美三级日本三级少妇99| 欲香欲色天天天综合和网| 午夜精品久久久久久| 最新成人av在线| 久久亚洲国产精品一区二区| 国产精品视频一| 一本色道**综合亚洲精品蜜桃冫 |