開啟otl的64位長整數支援

2021-09-08 19:27:54 字數 1120 閱讀 9168

要開啟otl的64位長整數支援,必須先定義巨集

1

#define otl_bigint __int64 //

vc++, borland c++

或者

1

#define otl_bigint long long //

gnu c++

同時,因為otl只是乙個標頭檔案,具體的64位長整數支援還得靠底層,對於底層驅動本身就支援64位長整數的情況,就不需要定義其他巨集了,而對於那些底層驅動不支援64位長整數的情況,例如oci版本小於11.2或是odbc本身不支援64位整數,則需要額外定義巨集

1

#if defined(__gnuc__) //

gnu c++

2 #include 3

#define otl_bigint long long

4#define otl_str_to_bigint(str,n) \ 5

8#define otl_bigint_to_str(n,str) \ 9

12#endif

或是(windows平台)

1

#define otl_bigint __int64

2#define otl_str_to_bigint(str,n) \ 3

6#define otl_bigint_to_str(n,str) \ 7

10

原理就是通過巨集把64位長整數轉換成字串儲存在資料庫裡,取的時候再把字串轉換成64位長整數

在lp64平台上使用64位的oci時,可以考慮定義巨集

1

#define otl_ora_map_bigint_to_long

這個比定義巨集otl_str_to_bigint和otl_bigint_to_str執行效率更好

總之,就一句話,要想開啟otl的64位長整數,則必須定義巨集otl_bigint,如果底層驅動是oci11.2以前的版本或是odbc本身不支援64位長整數(這個情況比較少見),則還需要定義巨集otl_str_to_bigint和otl_bigint_to_str

參考資料:要fq才能開啟,不知道為啥這個**會被封掉)

C 的64位整數

在做acm題時,經常都會遇到一些比較大的整數。而常用的內建整數型別常常顯得太小了 其中long 和 int 範圍是 2 31,2 31 即 2147483648 2147483647。而unsigned範圍是 0,2 32 即0 4294967295。也就是說,常規的32位整數只能夠處理40億以下的...

C 中的64位整數

在做acm題時,經常都會遇到一些比較大的整數。而常用的內建整數型別常常顯得太小了 其中long 和 int 範圍是 2 31,2 31 即 2147483648 2147483647。而unsigned範圍是 0,2 32 即0 4294967295。也就是說,常規的32位整數只能夠處理40億以下的...

c 中的64位整數

主流編譯器不支援64位整數。c99將long long納入標準中。long long型別的位數不低於64.linux上gcc從4.5版本開始,完全支援c99標準,因此可以使用long long表示64位整數。windows vc6.0 不支援c99標準,但是windows為了支援64位整型,可以使用...