有谁可以解释为什么这段代码不会编译?
的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
$
答案 0 :(得分:4)
您缺少ext2_group_desc
的某些定义(可能在某些包含的文件中?)。我猜这是struct
。然后你可以编码
gd = *(ext2_group_desc*) buf;
如果您想将buf
的内存复制到gd
结构中。
请阅读一本关于C编程的好书。学习C需要很多天的工作。
同时启用编译器中的所有警告。