1

たとえば、 Mac OS X (32 ビットと 64 ビットの両方)でのunsigned intコンパイルのサイズに関する情報はどこで入手できますか? gcc一般的に、コンパイラ/設定/プラットフォーム/タイプでアクセスでき、そのタイプの大きさを調べることができるリソースが欲しいです。誰かそのようなことを知っていますか?

更新: すべての応答に感謝します。私は、すべてのマシンで記述して実行する必要のあるコードではなく、どこかに静的テーブルの行に沿った何かがあることを望んでいました。

4

6 に答える 6

9

sambowry の方法の一般的な方法 (C++):

#include <iostream>
#include <typeinfo>

template <typename T>
void print_sizeof(void)
{
    std::cout << "sizeof(" <<
        typeid(T).name() << ") == " <<
        sizeof(T) << std::endl;
}

int main(void)
{
    print_sizeof<short>();
    print_sizeof<unsigned int>();
    print_sizeof<long>();
    print_sizeof<long long>();
    print_sizeof<uint64_t>();
}

コンパイラは、名前の実際の文字列を提供する必要はありませんが、ほとんどの場合は提供する必要があることに注意してください。

于 2009-09-22T00:06:09.897 に答える
7

一般に、 を含める場合、正確なサイズを知る必要はありませんstdint.h。非常に便利なタイプがいくつか定義されています。

正確なサイズが必要な場合は、これらを使用します。

int8_t
uint8_t
int16_t
uint16_t
int32_t
uint32_t
int64_t
uint64_t

少なくとも指定されたサイズが必要な場合は、これらを使用します。

int_least8_t
uint_least8_t
int_least16_t
uint_least16_t
int_least32_t
uint_least32_t
int_least64_t
uint_least64_t

速度を最適化するために少なくとも指定されたサイズが必要な場合は、これらを使用します。

int_fast8_t
uint_fast8_t
int_fast16_t
uint_fast16_t
int_fast32_t
uint_fast32_t
int_fast64_t
uint_fast64_t
于 2009-09-22T01:09:22.170 に答える
6

sizeof 演算子を使用して、データ型の長さを問い合わせることができます。例えば:

#include <stdio.h> 
#include <inttypes.h> 

#define PRINT_SIZEOF(type)  printf("sizeof( " #type " ) == %zi\n", sizeof(type) )

int main(void){
  PRINT_SIZEOF( short        );
  PRINT_SIZEOF( unsigned int );
  PRINT_SIZEOF( long         );
  PRINT_SIZEOF( long long    );
  PRINT_SIZEOF( uint64_t     );
}

編集: %i が %zi に変更されました

于 2009-09-21T23:48:01.420 に答える
3

調べるためのプログラムを作成できない場合は、コンパイラ/プラットフォームの ABI (Application Binary Interface) 仕様を調べてください。サポートされている基本的なプリミティブ型のサイズ、アライメント、エンディアンなどを文書化する必要があります。

于 2009-09-22T00:18:26.070 に答える
2

関心のあるすべてのタイプの呼び出しを使用するテスト プログラムを作成できsizeofます。また、limits.h をチェックするのにも役立つ場合があります。

于 2009-09-21T23:47:00.313 に答える
0

タイプの入力を求める単純なシェル スクリプトを記述できます。タイプを入力すると、sambowry が投稿したようなものをコンパイルして実行し、そのサイズを教えてくれます。

于 2009-09-22T00:04:19.290 に答える