【问题标题】:enum storage size isn't known in C枚举存储大小在 C 中未知
【发布时间】:2017-09-02 05:07:37
【问题描述】:

这是我的 C 程序:

#include <stdio.h>
#include <string.h>

int main(void) {

    char nama[25];
    enum Jeniskelamin genders;
    strcpy(nama, "Mira");
    genders = 1;

    printf("Nama \t\t: %s\n", nama);
    printf("Jenis kelamin \t: %d", genders);

    return 0;
}

我在编译这个 .c 源文件时遇到了这个错误

enum.c: In function ‘main’:
enum.c:7:20: error: storage size of ‘genders’ isn’t known
enum Jeniskelamin genders;
                  ^

怎么了?

【问题讨论】:

  • 这是enum Jeniskelamin genders; C 代码吗?还要为您要创建的“事物”分配一个整数...您要使用这行代码enum Jeniskelamin genders; 来完成什么?
  • 我在错误的事情上投了赞成票,而反对票没有达到我想要的效果。无论如何,@Cody 有答案。您已经声明了一个枚举,但没有定义一个。因此,没有任何已知的存储类型/大小。

标签: c


【解决方案1】:

你永远不会定义枚举类型可能是什么。当你声明一个枚举类型时,你必须知道可能的值是什么,所以它知道可能需要多少数据(一个字节、两个字节、四个字节等)。因此,您必须先定义枚举类型,然后才能将其用作类型。您的代码应如下所示:

#include <stdio.h>
#include <string.h>

enum Jeniskelamin {Male, Female, Nonbinary};

int main(void) {

    char nama[25];
    enum Jeniskelamin genders;
    strcpy(nama, "Mira");
    genders = 1;

    printf("Nama \t\t: %s\n", nama);
    printf("Jenis kelamin \t: %d", genders);

    return 0;
}

此时,Male 被自动定义为 0,Female 被自动定义为 1,Nonbinary 被自动定义为 2。例如,如果您需要将它们更改为 Male = 7,则可以将其更改为 7。此时,如果这是您的意图,您将genders = 1 更改为genders = Female 会更清楚。只是这样读起来更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2021-05-03
    • 2017-07-24
    相关资源
    最近更新 更多