gpt4 book ai didi

c - 没有命名成员的 GCC 错误结构灵活数组成员

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:56 29 4
gpt4 key购买 nike

opts.h:

#ifndef PINF_OPTS_H
#define PINF_OPTS_H
#endif //PINF_OPTS_H

// == DEFINE ==
#define MAX_OPTS 100

// == VAR ==
struct _opt {
char *option; // e.g. --group
char *alias; // e.g. -G
int reqArg; // Require Argument | 0: No 1: Yes
int maxArgs; // -1: Undefined/ Unlimited
int func; /* Run Function? 0: No 1: Yes
* If No, it can be checked with function 'isOptEnabled'
*/
} opt;

struct _optL {
struct opt avOpt[MAX_OPTS];
} optL;

struct _acOpt {
struct opt *acOpt[MAX_OPTS];
} acOpt;

// == FUNC ==
void initOpts(void);

opts.c:

#include "opts.h"

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

// == VAR ==
static struct optL *optList;
static struct acOpt *activeOpts;

// == CODE ==
void initOpt(void) {
optList = (struct optL *)malloc(sizeof(struct optL *));
activeOpts = (struct acOpt *)malloc(sizeof(struct acOpt *));
}

opts_test.c:

#include <stdio.h>
#include "../include/opts.h"

int main(void) {
initOpts();
return 0;
}

我编译它:

gcc -c include/opts.c && gcc -c opts_test.c && gcc -o opts_test opts_test.o opts.o; rm -f *.o;

输出:

In file included from include/opts.c:5:0:    
include/opts.h:14:16: error: array type has incomplete element type ‘struct opt’
struct opt avOpt[];
^~~~~
include/opts.h:28:17: error: flexible array member in a struct with no named members
struct opt *acOpt[];
^~~~~

为什么 gcc 不编译我的文件?
在另一个项目中,我完全使用了这段代码并且它起作用了。
现在它不起作用....

最佳答案

看起来你正在声明一个结构,然后试图给它另一个名字。尝试使用 typedef,然后只使用不带“struct”的新名称。像这样。

此外,您分配的内存大小是指向结构的指针的大小,而不是结构的大小。

// == VAR ==
typedef struct _opt {
char *option; // e.g. --group
char *alias; // e.g. -G
int reqArg; // Require Argument | 0: No 1: Yes
int maxArgs; // -1: Undefined/ Unlimited
int func; /* Run Function? 0: No 1: Yes
* If No, it can be checked with function 'isOptEnabled'
*/
} opt_t;


typedef struct _optL {
opt_t avOpt[MAX_OPTS];
} optL_t;

关于c - 没有命名成员的 GCC 错误结构灵活数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757400/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com