我制作阵列的方式有什么问题?

时间:2015-04-09 15:52:33

标签: c arrays

该计划旨在帮助我的学生学习西班牙语。我已经得到了很多帮助。我在使用编译器时遇到问题。错误是:

1)问题未命名类型

2)s_questions未申报(首先使用此功能)

是否可以轻松解决这些问题,或者代码结构是否存在一些大问题?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define arrsize(a) (sizeof(a)/sizeof(a[0]);

struct Question
{
       char quiz[130];
       char answer1[20];
       char answer2[20];
       char answer3[20];
       char answer4[20];
       int correctAnswer;
       bool used;
}

 static Question s_questions[]={
       {
                "Que significa la palabra 'ser'\n",
                "1. to do",
                "2. to be",
                "3. to make",
                "4. to understand",
                2,
                false
        }, 

3 个答案:

答案 0 :(得分:2)

让我们列举一下问题:

  1. Question不是代码中的有效类型。 struct Question是。
  2. struct Question定义后,您错过了分号。
  3. 您的arrsize()宏中有一个额外的分号。并且缺少括号。
  4. 要使用bool,您必须#include <stdbool.h>
  5. 您未关闭s_questions
  6. 的声明

    修复所有这些将给我们:

    #include <stdbool.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define arrsize(a) (sizeof(a)/sizeof(a[0]))
    
    struct Question
    {
        char quiz[130];
        char answer1[20];
        char answer2[20];
        char answer3[20];
        char answer4[20];
        int correctAnswer;
        bool used;
    };
    
    static struct Question s_questions[] = {
        {
            "Que significa la palabra 'ser'\n",
            "1. to do",
            "2. to be",
            "3. to make",
            "4. to understand",
            2,
            false
        },
    };
    

答案 1 :(得分:1)

简单,第一点 - 你错过了结构末尾的半可乐

struct Question
{
       char quiz[130];
       char answer1[20];
       char answer2[20];
       char answer3[20];
       char answer4[20];
       int correctAnswer;
       bool used;
};

使用它。 另一点是你要使用&#34; struct Question&#34;,Ex -

struct Question foo;

否则,请使用此typedef

typedef struct
{
       char quiz[130];
       char answer1[20];
       char answer2[20];
       char answer3[20];
       char answer4[20];
       int correctAnswer;
       bool used;
} Question;

现在你可以使用,

问题q;

答案 2 :(得分:1)

在C中,必须使用struct关键字声明struct类型变量。 所以改变这一行:

static Question s_questions[]={

static struct Question s_questions[]={

此外,在定义structunionenum类型后,您必须在结束括号后添加分号。

struct Question
{
   char quiz[130];
   char answer1[20];
   char answer2[20];
   char answer3[20];
   char answer4[20];
   int correctAnswer;
   bool used;
}; //right here