从c中的字符缓冲区中转换对象

时间:2012-12-06 06:28:10

标签: c casting

有谁可以解释为什么这段代码不会编译?

的main.c

typedef struct ext2_group_desc
{
    unsigned long bg_block_bitmap;  /* Blocks bitmap block */
    unsigned long bg_inode_bitmap;  /* Inodes bitmap block */
    unsigned long bg_inode_table;       /* Inodes table block */
    unsigned int bg_free_blocks_count;  /* Free blocks count */
    unsigned int bg_free_inodes_count;  /* Free inodes count */
    unsigned int bg_used_dirs_count;    /* Directories count */
    unsigned int bg_pad;
    unsigned long bg_reserved[3];
} group_desc;

int main() {
    char buf[1024];
    group_desc gd;

    gd = (group_desc) buf;

    return(0);
}

终端

$ bcc -ansi -c test.c
test.c:7.26: error: need scalar or pointer or void
test.c:7.26: error: assignment to/from struct/union of a different type
$

1 个答案:

答案 0 :(得分:4)

您缺少ext2_group_desc的某些定义(可能在某些包含的文件中?)。我猜这是struct。然后你可以编码

   gd = *(ext2_group_desc*) buf;

如果您想将buf的内存复制到gd结构中。

请阅读一本关于C编程的好书。学习C需要很多天的工作。

同时启用编译器中的所有警告。