【发布时间】:2016-05-12 20:23:57
【问题描述】:
我正在尝试使用inode 的 i_private 并在其中存储一个带有名称和块号的结构:
struct osffs_inode_private_info* info;
inode->i_private = kzalloc(sizeof(struct osffs_inode_private_info), GFP_KERNEL);
inode->i_private = info;
strncpy(inode->i_private->name, "private succ", OSFFS_MAX_NAME_LEN);
其中结构体定义如下:
struct osffs_inode_private_info {
char name[OSFFS_MAX_NAME_LEN];
__be64 block;
};
当我尝试编译时,我收到警告说我是
“取消引用'void *'指针”
还有一个错误
“在非结构或联合的情况下请求成员‘name’”
在我做strncpy()的那一行。
我知道有很多关于取消引用 void 指针的线程/问题,似乎我只需要进行强制转换等。但不幸的是,我不知道如何将其应用于我的问题。
【问题讨论】:
-
inode的定义是什么? -
inode->i_private = info;为什么要在kmallo() 之后赋值?你可能想要一个“深”副本(memcpy) -
@MikeCAT,
struct inode *
标签: c pointers struct void-pointers dereference