たとえば、 Mac OS X (32 ビットと 64 ビットの両方)でのunsigned int
コンパイルのサイズに関する情報はどこで入手できますか? gcc
一般的に、コンパイラ/設定/プラットフォーム/タイプでアクセスでき、そのタイプの大きさを調べることができるリソースが欲しいです。誰かそのようなことを知っていますか?
更新: すべての応答に感謝します。私は、すべてのマシンで記述して実行する必要のあるコードではなく、どこかに静的テーブルの行に沿った何かがあることを望んでいました。
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>();
}
コンパイラは、名前の実際の文字列を提供する必要はありませんが、ほとんどの場合は提供する必要があることに注意してください。
一般に、 を含める場合、正確なサイズを知る必要はありません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
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 に変更されました
調べるためのプログラムを作成できない場合は、コンパイラ/プラットフォームの ABI (Application Binary Interface) 仕様を調べてください。サポートされている基本的なプリミティブ型のサイズ、アライメント、エンディアンなどを文書化する必要があります。
関心のあるすべてのタイプの呼び出しを使用するテスト プログラムを作成できsizeof
ます。また、limits.h をチェックするのにも役立つ場合があります。
タイプの入力を求める単純なシェル スクリプトを記述できます。タイプを入力すると、sambowry が投稿したようなものをコンパイルして実行し、そのサイズを教えてくれます。