【问题标题】:complex array initialization [closed]复杂数组初始化
【发布时间】:2014-04-09 11:51:42
【问题描述】:

谁能解释我为什么会出现这个错误以及在我的情况下应该如何完成复杂的数组初始化?

z3 src # head -37 company.c
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include "company.h"
#include "mytypes.h"
#include "depserv.h"
#include "table_defs/t_cat_deptype.h"

#define NUM_DEFAULT_DEPTYPES            9
typedef struct itl_cat_deptypes_t {
        t_cat_deptype_t         deptypes[NUM_DEFAULT_DEPTYPES];
} itl_cat_deptypes_t;

itl_cat_deptypes_t cat_deptypes[2] = {
        {
                {"Information Request",'\0'},
                {"Question",'\0'},
                {"Meeting",'\0'},
                {"Event",'\0'},
                {"Task",'\0'},
                {"Objective/Goal",'\0'},
                {"Authorization Request",'\0'},
                {"Dependency",'\0'},
                {"Custom",'\0'}
        },{
                {"Solicitud de Informacion",'\0'},
                {"Pregunta",'\0'},
                {"Junta",'\0'},
                {"Evento",'\0'},
                {"Tarea",'\0'},
                {"Objetivo/Meta",'\0'},
                {"Solicitud de Autorizacion",'\0'},
                {"Dependencia",'\0'},
                {"Personalizado",'\0'}
        }
};

z3 src # head table_defs/t_cat_deptype.h
#ifndef _T_CAT_DEPTYPE_
#define _T_CAT_DEPTYPE_

typedef struct t_cat_deptype_t {
        char                            description[64];
        char                            inactive;
} t_cat_deptype_t;

#endif

z3 src # make company.o
gcc -ggdb -Wmissing-prototypes -Wmissing-declarations -Wunused -Winline -Wno-format      -Wstrict-prototypes -Wimplicit-function-declaration -fmax-errors=5 -D_GNU_SOURCE -I./table_defs  -c company.c
cc1: warning: command line option "-fmax-errors=5" is valid for Fortran but not for C
company.c:17:3: error: extra brace group at end of initializer
company.c:17:3: error: (near initialization for 'cat_deptypes[0]')
company.c:17:3: warning: excess elements in struct initializer
company.c:17:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:18:3: error: extra brace group at end of initializer
company.c:18:3: error: (near initialization for 'cat_deptypes[0]')
company.c:18:3: warning: excess elements in struct initializer
company.c:18:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:19:3: error: extra brace group at end of initializer
company.c:19:3: error: (near initialization for 'cat_deptypes[0]')
company.c:19:3: warning: excess elements in struct initializer
company.c:19:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:20:3: error: extra brace group at end of initializer
company.c:20:3: error: (near initialization for 'cat_deptypes[0]')
company.c:20:3: warning: excess elements in struct initializer
company.c:20:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:21:3: error: extra brace group at end of initializer
company.c:21:3: error: (near initialization for 'cat_deptypes[0]')
company.c:21:3: warning: excess elements in struct initializer
company.c:21:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:22:3: error: extra brace group at end of initializer
company.c:22:3: error: (near initialization for 'cat_deptypes[0]')
company.c:22:3: warning: excess elements in struct initializer
company.c:22:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:23:3: error: extra brace group at end of initializer
company.c:23:3: error: (near initialization for 'cat_deptypes[0]')
company.c:23:3: warning: excess elements in struct initializer
company.c:23:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:24:3: error: extra brace group at end of initializer
company.c:24:3: error: (near initialization for 'cat_deptypes[0]')
company.c:24:3: warning: excess elements in struct initializer
company.c:24:3: warning: (near initialization for 'cat_deptypes[0]')
company.c:27:3: error: extra brace group at end of initializer
company.c:27:3: error: (near initialization for 'cat_deptypes[1]')
company.c:27:3: warning: excess elements in struct initializer
company.c:27:3: warning: (near initialization for 'cat_deptypes[1]')
company.c:27:20: error: expected '}' before '.' token
make: *** [company.o] Error 1
z3 src #

【问题讨论】:

  • t_cat_deptype_t 是什么?
  • @MichaelWalz 我已经在问题中描述过了,请重读
  • 不,你没有描述它,它是在table_defs/t_cat_deptype.h 中定义的,我猜不出那个文件里有什么。
  • @MichaelWalz ,不,我确实描述了它。再次阅读问题。
  • 您的问题已暂停。你应该问问自己为什么。

标签: c linux


【解决方案1】:

上线

{"Pregunta",'\0'}.

itl_cat_deptypes_t cat_deptypes[2] = {
        {
                {"Information Request",'\0'},
                {"Question",'\0'},
                {"Meeting",'\0'},
                {"Event",'\0'},
                {"Task",'\0'},
                {"Objective/Goal",'\0'},
                {"Authorization Request",'\0'},
                {"Dependency",'\0'},
                {"Custom",'\0'}
        },{
                {"Solicitud de Informacion",'\0'},
                {"Pregunta",'\0'}.
                {"Junta",'\0'},
                {"Evento",'\0'},
                {"Tarea",'\0'},
                {"Objetivo/Meta",'\0'},
                {"Solicitud de Autorizacion",'\0'},
                {"Dependencia",'\0'},
                {"Personalizado",'\0'}
        }
};

在行尾有一个. 而不是,。这也是编译器告诉你的:

company.c:27:20: error: expected '}' before '.' token

【讨论】:

  • 这不是错误的原因,更改'.'通过',',你会看到。编译器还会从第 17 行生成错误,而不是第 27 行。
  • 编译器告诉你它从第 17 行开始,你开始初始化数组。但是,如果您仔细观察,它会一直持续到遇到错误的那一行。这是我给你看的那条线。
  • @TheMe90 您指出的错字与编译器错误无关,如果您将其删除,则会出现相同的错误。您刚刚回答是为了获得积分,但为了帮助我解决问题,请投反对票。
  • 不,这不是真的,不值得为它争吵。我只是试图解释编译器告诉你什么,如果你说的是真的,那么肯定有其他问题。我明白了。
  • 我会给你最后一条帮助:在你更换 . ,然后重新编译,你会得到一个不同的错误:error: extra brace group at end of initializer。这是一个不同的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多