相关疑难解决方法(0)

如何根据C编程语言标准初始化结构

我想初始化一个struct元素,在声明和初始化中拆分.这就是我所拥有的:

typedef struct MY_TYPE {
  bool flag;
  short int value;
  double stuff;
} MY_TYPE;

void function(void) {
  MY_TYPE a;
  ...
  a = { true, 15, 0.123 }
}
Run Code Online (Sandbox Code Playgroud)

这是MY_TYPE根据C编程语言标准(C89,C90,C99,C11等)声明和初始化局部变量的方法吗?或者有什么更好或至少工作?

更新我最终得到一个静态初始化元素,我根据自己的需要设置每个子元素.

c struct initialization

435
推荐指数
10
解决办法
73万
查看次数

初始化结构数组

这是我刚刚在其他人的问题中找到的初始化.

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)

或者我完全错了?

c arrays struct initialization

23
推荐指数
3
解决办法
13万
查看次数

麻烦从用户空间C调用ioctl

我正在尝试实现一个程序来访问嵌入式系统上的内存.我需要访问一些控制寄存器,所以我认为ioctl是最好的方法.我已将ioctl添加到fops中:

struct file_operations aes_fops = {
  read: aes_read,
  write: aes_write,
  unlocked_ioctl: aes_ioctl,
  open: aes_open,
  release: aes_release
};
Run Code Online (Sandbox Code Playgroud)

并设置了功能:

int aes_ioctl(struct inode *inode,  
     struct file *file, 
     unsigned int ioctl_num,    
     unsigned long ioctl_param){

     printk(KERN_INFO "in ioctl\n");
....
}
Run Code Online (Sandbox Code Playgroud)

但我没有进入这个功能.这是我的用户空间代码.如果我这样做完全错了,请帮助我理解.

int main(int argc, char* argv[]){
    int fd = fopen("/dev/aes", "r+");
    ioctl(fd, 0, 1);
    fclose(fd);
}
Run Code Online (Sandbox Code Playgroud)

有些代码显然适用于较旧的内核,因为我正在编译一个已修改旧版Linux的嵌入式系统.

c ioctl linux-kernel

3
推荐指数
1
解决办法
1万
查看次数

这个点语法在Pebble手表开发教程中意味着什么?

我在Pebble watch app开发教程中遇到了以下代码:

// Set handlers to manage the elements inside the Window
  window_set_window_handlers(s_main_window, (WindowHandlers) {
    .load = main_window_load,
    .unload = main_window_unload
  });
Run Code Online (Sandbox Code Playgroud)

我无法理解.load和.unload的这个任务.这是标准C吗?我认为我以前从未见过类似的语法.

c pebble-sdk

3
推荐指数
1
解决办法
417
查看次数

为什么在结构初始化期间使用点运算符?

可能重复:
点(.)在struct初始化程序中的含义是什么?
[N ... M]在C聚合初始化器中的含义是什么?

struct confd_data_cbs    ssd_shdiag_callback = {
    .callpoint  = show_diag__callpointid_diag_cp,
    .get_object = ssd_common_get_object,
    .get_next   = ssd_common_get_next,
};
Run Code Online (Sandbox Code Playgroud)

.callback,.get_object,.get_next?

c struct

-2
推荐指数
1
解决办法
215
查看次数

标签 统计

c ×5

struct ×3

initialization ×2

arrays ×1

ioctl ×1

linux-kernel ×1

pebble-sdk ×1