我想创建一个大小为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类型,在我读完这篇文章之后:Size of the given structure我想我可以创建我需要的大小的int。所以我试着像这样创建一个结构:
typedef struct
{
int datachunk : 4064;
}
BLOCK;
当然,这是狂野的想象力,我错了。
那么,如何创建一个大小为508字节的结构,其中包含相同大小的数据类型整数(即4064?
答案 0 :(得分:3)
以下是:
typedef unsigned char fivehundred_and_eight_bytes[508];
答案 1 :(得分:1)
位字段不能宽于int。
6.7.2.1.3指定位域宽度的表达式应为整数常量表达式,其非负值 不超过将指定类型的对象的宽度 是冒号和表达省略。如果值为零,则 声明不得有声明者。