0

サイズが 508 バイトの構造体を作成したいと思います。

このコードを見て、任意のサイズの構造体を作成できると推測しました。

#include <stdint.h>

/**
 * Common Data Types 
 *
 * The data types in this section are essentially aliases for C/C++ 
 * primitive data types.
 *
 * Adapted from http://msdn.microsoft.com/en-us/library/cc230309(PROT.10).aspx.
 * See http://en.wikipedia.org/wiki/Stdint.h for more on stdint.h.
 */
typedef uint8_t  BYTE;
typedef uint32_t DWORD;
typedef int32_t  LONG;
typedef uint16_t WORD;

/**
 * BITMAPFILEHEADER
 *
 * The BITMAPFILEHEADER structure contains information about the type, size,
 * and layout of a file that contains a DIB [device-independent bitmap].
 *
 * Adapted from http://msdn.microsoft.com/en-us/library/dd183374(VS.85).aspx.
 */
typedef struct 
{ 
    WORD   bfType; 
    DWORD  bfSize;  
    WORD   bfReserved1; 
    WORD   bfReserved2; 
    DWORD  bfOffBits; 
} __attribute__((__packed__)) 
BITMAPFILEHEADER;

サイズが 508 バイトの int 型が必要です。この投稿を読んだ後:必要なサイズの int を作成できると想像しました。だから私は次のような構造体を作成しようとしました:

typedef struct 
{ 
    int datachunk : 4064; 
}  
BLOCK;

もちろん、それは勝手な想像であり、私は間違っています。

では、同じサイズのデータ​​型整数 (つまり 4064?

4

2 に答える 2

3

方法は次のとおりです。

typedef unsigned char fivehundred_and_eight_bytes[508];
于 2013-04-13T05:30:47.053 に答える
1

ビットフィールドは int より広くすることはできません。

6.7.2.1.3 ビットフィールドの幅を指定する式は、コロンと式が省略された場合に指定される型のオブジェクトの幅を超えない負でない値を持つ整数定数式でなければなりません。値がゼロの場合、宣言には宣言子がありません。

于 2013-04-13T05:41:44.263 に答える