给定一个复杂的数据结构,其中每个子结构都有一个具有{true或false}域的变量,
(例如)
struct dataBlock{
struct {
/* more members */
char status;
} node1;
struct {
/* more members */
char status;
} node2;
/* More nodes */
};
Run Code Online (Sandbox Code Playgroud)
只有1或0的值只有一个字节是浪费.是否有一种C语言技术,每个节点中的状态只会占用一个字节中的一个位?我能想到的是使用MACROS但是宏不能包含在本地范围内吗?因此,具有宏状态将意味着程序中只有一个宏状态.因此,调用node1.status和node2.status使用相同的宏.
您可以使用位域 - 此语法允许您定义strcut中每个int应占用的位数.但是请注意,C只能分配完整的字节,因此在任何情况下,结构的大小都会向上舍入到最接近的8位乘法.
例如:
struct {
int whole_int; /* a whole int, let's assume it's 16 bits. */
int half_int : 8; /* only half an int */
int another_half_int : 8;
} some_struct /* Total size is 2 bytes*/
Run Code Online (Sandbox Code Playgroud)
话虽如此,我真诚地怀疑你会注意到使用这种技术可以获得任何性能提升,正如Fredrick Gauss评论的那样,这可能不值得麻烦.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |