[Resolvido] Dúvida com Typedef

Olá!
Não consigo compilar o meu programa.


Abaixo, minha postagem original, mas não consegui encontrar problemas no código. Acredito que o problema seja na codificação. Devem haver alguns caracteres que o terminal não exibe, mas que estão lá e o linux não reconhece…

Estou editando meus arquivos .c e .h com o Notepad++, enviando para um computador remoto e tentando compilar pelo Putty (terminal ssh).

Meu computador é windows 7 e o remoto é Linux (CentOS)

já testei converter para UTF-8(sem BOM),UTF-8 e ANSI. Este erro aparece quando eu uso ANSI. Com UTF-8 (os dois… por acaso nao sei o que é BOM), ele acusa a presença de certos caracteres que impedem ele de compilar.

É o Notepad++ que está convertendo errado, estou escolhendo a codificação errada ou outra coisa?


Acredito que cometi um erro com o typedef, mas não consigo encontrar.
Tenho os arquivos:

fonmFunctions.c
fonmFunctions.h
fonmTypes.h

estou tentando compilar o
fonmFunctions.c

passo o comando

gcc -o fonmFunctions fonmFunctions.c

e recebo os erros:

In file included from fonmFunctions.c:15:
fonmFunctions.h:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before 'fonmGetLanguageIndex’
fonmFunctions.c:36: error: expected ‘,’ or ‘;’ before ‘fonmLanguageType’

Arquivo “fonmFunctions.c”:

#include <string.h>
#include "fonmFunctions.h"
#include "fonmTypes.h"

 fonmLanguageType
 fonmGetLanguageIndex(char * input)
 {
	fonmLanguageType result;
	byte counter = 0;
	
	//we use first to last enum element to ensure that this loop will work
	//whatever is the number of available languages
	for (result = fonmEnglish; result <= fonmInexistentLanguage; result++)
	{
				
		if (strcmp (input,fonmLanguageString[counter]) == 0)
			return result;
			
		counter++;
	}
	
	//if this code is reached, input is invalid
	return fonmInexistentLanguage;
	
 }

Arquivo “fonmFunctions.h”:

 
 fonmLanguageType
 fonmGetLanguageIndex(char *);

Arquivo “fonmTypes.h”:

typedef unsigned char byte;

typedef enum fonmLanguage 
				{
					fonmEnglish,
					fonmPortuguese,
					fonmInexistentLanguage
				} 
				fonmLanguageType;

const char* fonmLanguageString[] = {
					"fonmEnglish",
					"fonmPortuguese",
					""
					}

A única função que eu tenho deve retornar um elemento do tipo fonmLanguageType, definido em “fonmTypes.h”. Eu acho que cometi um erro nesse typedef, mas não consegui encontrar qual é. De qualquer forma, acho que o erro está aí por que o compilador aponta o erro na declaração da função tanto em “fonmFunctions.c” quanto em “fonmFunctions.h”

Ou talvez esteja deixando passar algum detalhe mais basico…

Alguém me ajuda? =D
Desde já, agradeço

Nossa estranho…
O protótipo da sua função fonmGetLanguageÍndex parece estar diferente no seu arquivo header fonmFunctions

Consegui descobrir o que era. Eram dois erros básicos, mas um pouco difíceis de achar:

Primeiro:
Tendo dois headers (fonmTypes.h e fonmFunctions.h), sendo que o primeiro usava um tipo definido no segundo, eu tinha que importá-los na ordem correta.

O segundo foi mais bobo:
Faltou um ‘;’ no primeiro header, então, o erro era acusado no segundo, por isso eu nunca olhava para onde estava o erro.

Muito obrigado, pessoal =D

1 curtida

Que bom! Boa sorte ae!!