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;

当然,这是天马行空的想象,我错了。

那么,如何创建一个大小为 508 字节的结构,其中包含相同大小的数据类型整数(即 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 回答