Jump to content

Visual Studio error C2371


RSFalcon7
 Share

Recommended Posts

Boa tarde a todos,

Infelizmente estou a trabalhar com o Visual Studio ?, e ele insiste em dar este erro:

error C2371: 'actualizarDirecao' : redefinition; different basic types	c:\...\project\simple2.c	402

Segundo a documentação [http://msdn.microsoft.com/en-us/library/t6xy3ys5(v=vs.71).aspx] este erro tem a ver com redefinições, no entanto não há qualquer redefinição na linha do erro nem nos arredores, já alterei o nome de todos os identificadores e o erro continua.

Desde já obrigado,

RSFalcon7

Link to comment
Share on other sites

Para o caso de alguém querer ver o código:

379:void transposta(double m[16])	{
double aux[] = {m[1],m[2],m[3],m[6],m[7],m[11]};
/*
0	4	8	12		 \		0	1	2	3
1	5	9	13	  --------\		4	5	6	7
2	6	10	14	  --------/		8	9	10	11
3	7	11	15		 /		12	13	14	15
*/
m[1]  = m[ 4];
m[2]  = m[ 8];
m[3]  = m[12];
m[6]  = m[ 9];
m[7]  = m[13];
m[11] = m[14];

m[ 4] = aux[0];
m[ 8] = aux[1];
m[12] = aux[2];
m[ 9] = aux[3];
m[13] = aux[4];
m[14] = aux[5];
}

402:void actualizarDirecao(double _trans[3][4] )	{
double aux[16];
    int i;

// aux AR matrix to GL matrix 
argConvGlpara(_trans, aux);
// Fix scales
transposta(aux);
if(invertMatrix(aux) != 0)
	return;
// Remove translations
aux[12]=0;
aux[13]=0;
aux[14]=0;

for( i=0 ; i<16 ; i++)
	transform[i] = (GLfloat) aux[i];
}
Link to comment
Share on other sites

Mas estás a usar a linguagem C++ ou a linguagem C (quadro de C++; nome do ficheiro: c:\...\project\simple2.c)?

Verifica lá (outra vez) se não tens outra definição (ou protótipo) da função actualizarDirecao.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Mas estás a usar a linguagem C++ ou a linguagem C (quadro de C++; nome do ficheiro: c:\...\project\simple2.c)?

C, pela força do hábito o tópico veio parar à secção C++

Verifica lá (outra vez) se não tens outra definição (ou protótipo) da função actualizarDirecao.

Dentro de todos os ficheiros do projecto [e mais alguns que o VS indexa] não tenho, além de que esta função já se chamou updateDir, atualizarDirecao, _atualizarDirecao, __atualizarDirecao, ___atualizarDirecao, ____atualizarDirecao e _____atualizarDirecao e o erro continua no mesmo lugar, sempre no nome da função.

Link to comment
Share on other sites

o erro continua no mesmo lugar, sempre no nome da função

Hmmm ... já experimentaste apagar os ficheiros de suporte que o VisualStudio cria (para diversas coisas ...) ou até começar um projecto novo com os mesmos ficheiros 'source'?

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Hmmm ... já experimentaste apagar os ficheiros de suporte que o VisualStudio cria (para diversas coisas ...) ou até começar um projecto novo com os mesmos ficheiros 'source'?

Não, mas acabei de experimentar mudar as funções para uma zona mais acima do ficheiro e o erro desapareceu.

Por estas e por outras que considero o Visual Studio um mal IDE.

Link to comment
Share on other sites

uma pergunta e resposta no StackOverflow indica que talvez estejas a chamar a função antes da definição.

acabei de experimentar mudar as funções para uma zona mais acima do ficheiro e o erro desapareceu.

E, aparentemente, é isso mesmo que te aconteceu.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

E envia, esse erro. É mais uma das razões pelas quais normalmente se coloca os protótipos das funções antes do código, ou mesmo em ficheiros .h. Tens alturas em que, por muito que queiras, não consegues uma ordem que te elimine os erros.

Mesmo que não queiras usar os .h, podes declarar os protótipos todos no início do ficheiro. Depois já podes colocar o código das funções na ordem que queres, sem teres de ligar a este tipo de hierarquia. Tens é de ter o cuidado de actualizares o protótipo de uma função sempre que alterares o tipo de retorno ou os parâmetros de entrada.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.