日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11)

發布時間:2023/12/2 c/c++ 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原來一直使用ACE的跨平臺整數類型,比如:ACE_UINT32, 但是自己使用C++的風格是明顯的現代風格,以范型為主,所以最近開始逐步替換ACE的代碼,改用boost庫。

在boost庫中,standard integer types用來支持跨平臺的整數類型,我用的是1.48版本,參考文檔:

boost庫的整數實現基于99 C標準,不選98C++標準為基礎是因為有些情況下的未定義行為。將來新的C++標準如果規定了跨平臺整數類型的話,boost的這個庫可能被廢除。不過現在C++11還沒有編譯器完全支持,也沒有太多選擇。

自己實現固然可以,不過意味著分發困難和很多測試,看明白boost如何實現的就可以了。沒必要自己干這脹活吧。

注意,總是使用boost::開頭的類型和模板,不要直接使用boost引入的C的標準類型和宏。

現在開始。

boost提供了精確寬度的整數類型,采用int#_t 命名,#就是位數,比如int8_t 代表有符號的8位整數。那么它的真實對應物是什么?

注意,我這里是Ubuntu 64bit, GCC4.6.3, boost 1.48.0

/*?For?GCC?2.7?and?later,?we?can?use?specific?type-size?attributes.??*/

#?define?__intN_t(N,?MODE)?\

typedefintint##N##_t?__attribute__?((__mode__?(MODE)))

#?define?__u_intN_t(N,?MODE)?\

typedefunsignedintu_int##N##_t?__attribute__?((__mode__?(MODE)))

#?ifndef?__int8_t_defined

#??define?__int8_t_defined

__intN_t?(8,?__QI__);

__intN_t?(16,?__HI__);

__intN_t?(32,?__SI__);

__intN_t?(64,?__DI__);

#?endif

用宏替換后,其實就是:

typedefintint8_t?__attribute__?((__mode__?(__QI__)))

用到了幾個GCC編譯器的指令

__attribute__, __mode和 __QI__

##是宏的連接符號。

__QI__就代表最小尋址單元,一個字節,8位。

__HI__ 以及后面的指令都是8位的若干倍數。

至于無符號固定寬度整數類型,前面加上u,形如:uint#_t 就是無符號整數的固定寬度表達方法。

實現采用了另一套typedef,沒有用上面的編譯器指令

/*?Unsigned.??*/

typedefunsignedcharuint8_t;

typedefunsignedshortintuint16_t;

#ifndef?__uint32_t_defined

typedefunsignedintuint32_t;

#?define?__uint32_t_defined

#endif

#if?__WORDSIZE?==?64

typedefunsignedlongintuint64_t;

#else

__extension__

typedefunsignedlonglongintuint64_t;

#endif

更新:2013/9/14

不過今天開始啟用C++11,現在有了標準的可用。參考文檔:

幾乎和boost里面的一樣。所以本文標題也有所改變。

總結

以上是生活随笔為你收集整理的boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。