error c99 designator ‘name‘ outside aggregate initializer解决方案

在写C/C++代码时通常随手声明的struct如下:

  struct test{
      char name[16];
      int id;
      unsigned int number;
  };

此后在使用该结构体创建数组时写成如下代码:


  struct test Students[] = {
      [0] = {                                                                                                                             
          .name = "ddds",
          .id = 0,
          .number = 21212
      },  
      [1] = { 
          .name = "sadj",
          .id = 1,
          .number = 122233
      }   
 };

但是,在编译时会如下错误:

error c99 designator ‘name’ outside aggregate initializer

有两种解决方案:
1. 修改初始化方法

struct test Students[] = {                                                                                                              
      [0] = {
          "ddds",
          0,
          21212
      },
      [1] = {
          "sadj",
          1,
          122233
      }
  };

这样修改就不会报错了,但是不便于阅读。

2. 修改结构体声明方法
该方法取自内核中的写法

struct test{
      const char *name;                                                                                                                   
      //char name[16];
      int id;
      unsigned int number;
  };

将字符数组改成字符指针,即可规避上述问题。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值