2013-04-13 45 views
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类型,之后我看到这篇文章:Size of the given structure我想象我可以创建的大小,我需要的INT。所以,我试图创建一个结构,像这样:

typedef struct 
{ 
    int datachunk : 4064; 
} 
BLOCK; 

当然,这是野生的想象力和我错了。

所以,我怎么能创造出大小508个字节的结构包含相同大小的数据类型整数(即4064

+0

没有内置的整数,大型的任何实现我所知道的。如果你真的需要一个4064位的整数,你将不得不使用一些大的整数实现,这有效地创建一个大的整数出多个较小的整数。 –

回答

3

方法如下:?

typedef unsigned char fivehundred_and_eight_bytes[508]; 
+0

您将其定义为char的事实不会影响结果吗? (例如,在我的问题开头引用的代码的typedef将数据类型定义为无符号和有符号整数?) – IberoMedia

+0

@IberoMedia什么“结果”?唯一需要注意的是'CHAR_BIT'(它可能不总是8)。但是这段代码总是为你定义一个508字节长的数据类型。 – 2013-04-13 05:34:50

+0

好吧,我明白了。根据结果​​我的意思,当然这个问题确实包括,后来我打算使用这种数据类型来读取二进制数据,所以我想我需要的类型是整数。但是,我再次看到它的大小部分和概念。谢谢 – IberoMedia

1

位字段可以”吨是比int更宽。

6.7.2.1.3指定的比特字段的宽度应是整数常量表达式与具有非负值,它 不超过的一个对象的宽度的表达将被指定 类型是省略了结肠和表达。如果该值为零, 声明应没有声明。

相关问题