Ir ao conteúdo
  • Cadastre-se

[Duvida]Struct em C


SnakerDLK

Posts recomendados

o código...

typedef struct umTipoStruct{
char item[1025];
char description[1025];
char flag;
} umTipo;

struct umTipo umaStruct[] =
{
{"teste","",2},
{"outro teste","",1},
{"","",0}
};

o compilador (no caso gcc do CentOS 5.0(red hat)) dá erro dizendo "Error: Array has incomplete element type" ...

eu encontrei em sites que o compilador reclama por ele nao sabe o tamanho do tipo para poder alocar a matriz... como eu conserto isso ?

eu mudei para isso:

struct umTipoStruct umaStruct[] = 
{
{"teste","",2},
{"outro teste","",1},
{"","",0}
};

só que ele dá um aviso que faltam separadores em algum lugar... e eu acho que como eu fiz agora não está certo....

agradeço...

Link para o comentário
Compartilhar em outros sites

Depois de alguns testes de compilação, acho que seu objetivo era este, não?:


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

typedef struct umTipo{
char *item;
char *description;
char flag;
} umTipo;

struct umTipo umaStruct[255] =
{
{"teste","",'2'},
{"outro teste","",'1'},
{"","",'0'}
};

int main()
{
printf("%s \n",umaStruct[0]); //Cada indice é um elemento de umaStruct;

system("PAUSE");
return 0;
}

Se estiver errado me avisa, é que ainda não vi o objetivo deste método.

Link para o comentário
Compartilhar em outros sites

tipo.. o objetivo nao vem ao caso... porque a partir dessas structs dá pra fazer qqr coisa...

no caso seria um menu de ncurses.... mas que nao vem ao caso xD

ainda nao estou satisfeito....porque com

 struct umTipoStruct umaStruct[255] = 
{
{"teste","",2},
{"outro teste","",1},
{"","",0}
};

eu estaria alocando uma matriz de 255 termos do tipo umTipo... onde só vou usar 3 .... claro... poderia substituir o '255' por '3' ... mas o gcc nao consegue ver isso sozinho ?

para getopt_long existe uma struct parecida onde as opções longas e curtas da linha de comando e se a opção recebe argumentos adicionais é definida....

só que no caso o tipo da struct é static... lembro de ter tentado definir as minhas estruturas como static mas não adiantou... continuou dando o erro..

agradeço...

Link para o comentário
Compartilhar em outros sites

esqueceu do typedef?

seria como se você tivesse falando:

struct umTipoStruct{char item[1025];char description[1025];char flag;umTipo;}

quando tivesse chamando o umTipo.

e você colocou um struct umTipo umaStruct[] = ..., dai ia ficar com 2 struct.

não tem nada estranho não?

saca?

Link para o comentário
Compartilhar em outros sites

hmmm... estranho que eu estava seguindo o modelo da definição do getopt_long...


static struct option long_options[] =
{
{"add", 1, 0, 0},
{"append", 0, 0, 0},
{"delete", 1, 0, 0},
{"verbose", 0, 0, 0},
{"create", 1, 0, 'c'},
{"file", 1, 0, 0},
{0, 0, 0, 0}
};

http://www.cs.duke.edu/courses/spring04/cps108/resources/getoptman.html

Link para o comentário
Compartilhar em outros sites

hmm...

nao sei se é melhor que C no caso de eficiencia...

porque como o C# é depentente do .NET, consome mais recursos...

e ao mesmo tempo limita o usuário a programar para windows, enqto que eu uso mais linux para programar...

(sim, existem versões do C# para outros sistemas operacionais...mas nenhum completo ainda....)

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...