C言語関係掲示板

過去ログ

No.200.64ビット型の表し方


No.1254

64ビット型の表し方
投稿者---takeo(2002/03/14 15:43:35)


こんにちは。

ある環境で動いていたソースを、違う環境に移植しようとしているの
ですが、以下のところで行き詰まっています。

動いていた環境では、各型が以下のようにtypedefされています。
------------------------------------------------------
typedef  unsigned char   u_char;
typedef  unsigned short   u_short;
typedef  unsigned int    u_int;
typedef  unsigned long   u_long;

typedef  unsigned char   u_int8_t;
typedef  unsigned short   u_int16_t;
typedef  unsigned int    u_int32_t;
typedef  unsigned __int64  u_int64_t;
----------------------------------------------------

移植先でこれをコンバイルしようとすると、
「__int64 undeclared」
とエラーが出てしまうのです。

そこで、
'typedef unsigned __int64   u_int64_t;' の代わりに
'typedef unsigned long     u_int64_t;' としても
64ビットではなく、32ビットと判断され正常に動作しません。

つまり64ビットを一つの型としてtypedefしたいのですが、その方法を
教えて頂けないでしょうか?

ちなみに、移植しようとしている環境は、
OS     :Linux7.0
コンバイラ :gcc-2.96
です。

よろしくお願いします。



No.1255

Re:64ビット型の表し方
投稿者---かずま(2002/03/14 18:27:24)


> 'typedef unsigned __int64   u_int64_t;' の代わりに
> 'typedef unsigned long     u_int64_t;' としても
> 64ビットではなく、32ビットと判断され正常に動作しません。

typedef unsigned long long u_int64_t; ではどうでしょうか。

printf では、"%Lu" や "%Lx" で表示できるはずです。
符号付きの long long なら、"%Ld" かな。




No.1256

Re:64ビット型の表し方
投稿者---かずま(2002/03/14 18:33:34)


> printf では、"%Lu" や "%Lx" で表示できるはずです。
> 符号付きの long long なら、"%Ld" かな。

訂正します。
"%qu"、"%qx"、"%qd" または "%llu"、"%llx"、"%lld" です。



No.1257

Re:64ビット型の表し方
投稿者---takeo(2002/03/15 09:52:16)


おはようございます。
質問者のtakeoです。

返信ありがとうございます。
なるほど、「long long 」を使えば64ビットを表せるのですね。
これは知らなければいけない常識なのでしょうか?(笑)

それでは早速使ってみます。


No.1261

Re:64ビット型の表し方
投稿者---かずま(2002/03/15 21:57:41)


> これは知らなければいけない常識なのでしょうか?(笑)

1999年版の新しい C の規格です。
たとえば、http://seclan.dll.jp/c99d/ なんかが参考になるのでは。


No.1263

C99について補足
投稿者---kikk(2002/03/15 23:46:36)


ども。


>1999年版の新しい C の規格です。

いわゆるC99とよばれる規格についてちょっとだけ。

(long long intのように)この規格で追加されたものは、多くの処理系で、
もともと独自に用意されていた機能やC++の機能が数多く含まれています。
わかりやすい身近な例ではコメントの//などが挙げられます。

なので、C99への正式対応のアナウンスが無い処理系でも、(うれしいことに)
追加機能はけっこう使えてしまうことが多いです。
# たしかgccはC99の対応度がけっこうよかったような気がします


では。

No.1278

Re:C99について補足
投稿者---takeo(2002/03/18 20:58:28)


takeoです。

Cと言っても、進化しつづけているという感じでしょうか?
あまりに分からない事が多くて頭痛いですが(笑)、とても勉強になります。



戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved