ビットフィールドに適用すると、Sizeof() は機能しません。
# cat p.c
#include<stdio.h>
int main( int argc, char **argv )
{
struct { unsigned int bitfield : 3; } s;
fprintf( stdout, "size=%d\n", sizeof(s.bitfield) );
}
# gcc p.c -o p
p.c: In function ‘main’:
p.c:5: error: ‘sizeof’ applied to a bit-field
...明らかに、浮動小数点の部分サイズなどを返すことができないためです。しかし、それは興味深い質問をもたらしました。Cで、変数/型のビット数を教えてくれる同等のものはありますか? 理想的には、ビットフィールドに加えて、charやintなどの通常の型でも機能します。
アップデート:
ビットフィールドの sizeof() に相当する言語がない場合、それを計算する最も効率的な方法は何ですか?実行時に! これに依存するループがあり、ビットフィールドのサイズを変更した場合にループが壊れないようにしたいと想像してください。ビットフィールドのサイズとループの長さをマクロにする公正な不正行為はありません。;-)