static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
Run Code Online (Sandbox Code Playgroud)
我不太了解这个C语法.我甚至无法搜索,因为我不知道语法的名称.那是什么?
我在一些示例代码中看到了下面的语法,我不确定我是否理解它.
CGRect imageRect = (CGRect){.size = baseImage.size};
Run Code Online (Sandbox Code Playgroud)
这只是一种初始化CGRect等价物的简便方法:
CGRect imageRect = CGRectMake(0,0,baseImage.size.width, baseImage.size.height);
Run Code Online (Sandbox Code Playgroud)
这种语法有什么好处,除了稍微减少输入?
这是我刚刚在其他人的问题中找到的初始化.
my_data data[]={
{ .name = "Peter" },
{ .name = "James" },
{ .name = "John" },
{ .name = "Mike" }
};
Run Code Online (Sandbox Code Playgroud)
我之前从未见过这样的东西,也找不到解释.name可能是正确的.
我正在寻找的是这个过程如何逐步进行.
它看起来像是:
1) data;
2) *data;
3) (*data).name;
4) (*data).name="Peter";
Run Code Online (Sandbox Code Playgroud)
或者我完全错了?
我想创建一个struct Person,它由两个struct类型和一个变量组成.我如何初始化和使用struct Person呢?
struct name{
char *firstName;
char *lastName;
} name;
struct address{
char *street;
int number;
} address;
struct person{
struct name fullName;
struct address fullAddress;
int age;
} person;
Run Code Online (Sandbox Code Playgroud) 这是ioctl用户空间中的调用:
int ioctl(int fd, int cmd, ...);
Run Code Online (Sandbox Code Playgroud)
据我所知,当我们想要执行IO操作时,我们ioctl使用一组请求(命令)定义我们自己的函数,将我们分配ioctl给file_operations结构,如下所示:
struct file_operations fops = {
.read = device_read,
.write = device_write,
.ioctl = device_ioctl, // device_ioctl is our function
.open = device_open,
.release = device_release,
};
Run Code Online (Sandbox Code Playgroud)
与device_ioctl用户空间接口相比,该功能的定义不同:
static long device_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
Run Code Online (Sandbox Code Playgroud)
我认为基于文件描述符,内核可以获得适当的文件结构并调用设备ioctl.
这只是一个猜测,因为我找不到通用函数定义,其中内核ioctl根据fd传递到泛型ioctl接口的文件描述符选择适当的函数?ioctl我只能找到3个定义,但显然那些只是设备的定义,而不是内核:ioctl
我知道如何初始化结构(通常),但我在结构体中遇到了这个结构的麻烦
typedef struct Location{
uint8_t x;
uint8_t y;
} loc;
typedef struct Person{
loc location;
} person;
Run Code Online (Sandbox Code Playgroud)
全局变量:
static person hero;
Run Code Online (Sandbox Code Playgroud)
初始化函数:
void InitializeHero() {
person hero = {0,0, {0,0}}; // this compiles
hero.location = {0,0}; // but this does not compile
hero = {0,0,{0,0}}; // this also does not compile
}
Run Code Online (Sandbox Code Playgroud) 是否可以静态初始化结构的一部分?
我有这样的结构:
struct data {
char name[20];
float a;
int b;
char c;
};
Run Code Online (Sandbox Code Playgroud)
初始化和打印时:
struct data badge = {"badge",307};
printf("%s,%d\n", badge.name, badge.b);
Run Code Online (Sandbox Code Playgroud)
这将打印出"徽章",但不会打印出"307".
我怎样才能使用char name[20]它int b而忽略它float a.