Ir ao conteúdo

[Duvida]Struct em C


SnakerDLK

Posts recomendados

Postado

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...

Postado

Não entendi direito seu objetivo ai, mas revendo pelas regras do C em termos de sintaxe, fica mais ou menos assim:


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

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

Postado

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.

Postado

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...

Postado

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?

Postado

Tens razão, melhor deixar programação pro meu mano, eu mesma não entendo muito desta coisa. Modificando:


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

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

Postado

eventualmente... mas dizem que para a area de serviços de rede C++ não é tão bom, porque ele cria uma "casca" que você não usa e consome recursos...

mas sim, eventualmente aprendo C++....

Postado

Serviços de rede realmente (embora se bem programado, de para evitar este consumo de recursos que não etão em uso), mais eu tenho ouvido falar que C# é ainda melhor que o C neste caso. Mas bem, precisando tamo ai.

Postado

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....)

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!