型のバイト数を調べる ― 2008年11月26日 02時15分13秒
異なったアーキテクチャやエンディアンを持つシステム間で、直接バイナリを交換するのには、全ての構造体の要素の大きさを完全に一致させる必要がある。
逆に言えば、エンディアン間の違いはバイトを入れ換えるしか無いが、OS やアーキテクチャなどを跨いで、構造体の内部構造を一致させることも可能だ。なるべく避けたい事態だが、時と場合によっては、必要になる。いちいち文字列に変換をしていたら、パフォーマンスが大幅に落ちるためだ。
以下のプログラムで、各型の大きさが調べられる。
#include <stdio.h>
int main(void)
{
printf("type\t\tbyte\n");
printf("void\t\t%zd\n", sizeof(void*));
printf("char\t\t%zd\n", sizeof(char));
printf("short\t\t%zd\n", sizeof(short));
printf("int\t\t%zd\n", sizeof(int));
printf("long\t\t%zd\n", sizeof(long));
printf("long long\t%zd\n", sizeof(long long));
printf("float\t\t%zd\n", sizeof(float));
printf("double\t\t%zd\n", sizeof(double));
printf("long double\t%zd\n", sizeof(long double));
return 0;
}
何の変哲も無いコードだが、一回づつ必要になる度に書くのも面倒だ。
最近のコメント