Erro ao executar make - o tipo de matriz possui um tipo de elemento incompleto

0

Estou tentando instalar a biblioteca do libbow. Quando eu executo o arquivo make o seguinte erro é gerado

gcc -c   -Ibow -I. -I./argp -DHAVE_LIBNSL=1 -DHAVE_STRERROR=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_RANDOM=1 -DHAVE_SRANDOM=1 -DHAVE_SETENV=1 -DHAVE_STRCHR=1 -DHAVE_STRRCHR=1 -DHAVE_ALLOCA_H=1  -g -O -Wall -Wimplicit -o array.o array.c
In file included from array.c:22:
./bow/libbow.h:2128: error: array type has incomplete element type
make: *** [array.o] Error 1

A fonte da libbow é: link (A versão mais recente)

Os resultados da pesquisa mostraram isso como um problema do compilador. Como resolver isso? Ou há alguma outra fonte de libbow?

    
por Nithin Jose 11.01.2015 / 08:58

1 resposta

0

O erro aponta para a linha 2128 de bow/libbow.h

extern struct argp_child bow_argp_children[]; 

Isso significa que struct argp_child não está definido.

Notei que na linha 1346 há uma declaração antecipada da estrutura.

struct argp_child;      /* forward declare this type */

A declaração completa da estrutura está na linha 245 de argp/argp.h

Para resolver esse problema, você pode

  • Use as inclusões de argp.h em libbow.h

    ou seja, #include "../argp/argp.h"

  • Copie a definição struct argp_child em libbow.h (não recomendado)

Um outro pensamento é que você pode compilar array.c do diretório errado e -Ibow -I. -I./argp não aponta para os diretórios corretos.

    
por ztik 15.01.2015 / 10:56