【问题标题】:Error: "expected ‘:’, ‘,’, ‘;’, ‘}’ " and "struct has no member named"错误:“预期的‘:’、‘,’、‘;’、‘}’”和“结构没有命名的成员”
【发布时间】:2022-01-18 21:08:06
【问题描述】:

我找不到任何丢失的括号。有什么问题?

#ifndef PROCINFO_H_
#define PROCINFO_H_
#include <linux/limits.h>
#include <elf.h>

 enum boolean {f,t};

typedef struct {

    enum boolean fileHdr = 0;
    enum boolean programHdr=0;
    enum boolean sectionHdr = 0;
    enum boolean info = 0;
    enum boolean def = 0;
} procInfo;

typedef struct {
    char filename[NAME_MAX]; 
    procInfo info;
} procFile;


#endif /* PROCINFO_H_ */

错误:

expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token  
make: *** [src/subdir.mk:20: src/elfViewer.o] Error 1  

【问题讨论】:

  • 欢迎来到 SO。您没有缺少括号。您在结构定义中有=。这在 C 中是不可能的。您只能在变量定义中赋值。 C 中没有类型的默认值。
  • 对于未来的问题,请发布完整的错误消息。它应该包括检测到错误的确切位置。
  • 这能回答你的问题吗? default value for struct member in C

标签: c struct compiler-errors initialization typedef


【解决方案1】:

你不能在 C 中初始化结构的数据成员,而且你正在做的 typedef 声明中

typedef struct {

    enum boolean fileHdr = 0;
    enum boolean programHdr=0;
    enum boolean sectionHdr = 0;
    enum boolean info = 0;
    enum boolean def = 0;
} procInfo;

你需要写

typedef struct {

    enum boolean fileHdr;
    enum boolean programHdr;
    enum boolean sectionHdr;
    enum boolean info;
    enum boolean def;
} procInfo;

当定义这种类型的对象时,您可以为其提供初始化,例如

pricinfo info = { 0 };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2013-05-23
    • 2023-03-25
    • 2018-09-13
    相关资源
    最近更新 更多