DicasBCB
Bem-vindo: Seg Set 06, 2010 1:48 pm

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 8 mensagens ] 
Autor Mensagem
 Título: Undefined Symbol?!?!
MensagemEnviado: Ter Jan 19, 2010 10:18 am 
Offline

Registrado em: Seg Mai 05, 2008 10:44 am
Mensagens: 20
Pessoal, estou com um problema que parece ser muito simples de resolver mas não estou conseguindo.
Meu código realiza vários cálculos iterativos e eu preciso implementar uma condição de parada para quando ele atinge regime permanente. O problema está na delcaração das variáveis. Eu declarei 3 novas variáveis pra isso mas quando uso o debug pra ver se está td certo aparece escrito do lado das variáveis que eu criei:
E2451 Undefined symbol 'modauxuo'
E2451 Undefined symbol 'modauxu'
As variáveis estão declaradas no início do programa junto com todas as outras. Onde está estão estas mensagens de erro deveria aparecer o valor das variáveis, no caso como acabei de declara-las, devia ser 1 em ambas.
Eu ainda não usei as variáveis em nehuma parte do código. Simplesmente declarei e rodei com o debug pra ver se estava tudo certo.

Alguém sabe o que pode ser?? Eu não sei mais o que tentar pra resolver isso... Se precisarem do código do programa me avisem que eu posto aqui.

Desde já, obrigado.


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Qui Jan 21, 2010 1:54 pm 
Offline

Registrado em: Sáb Mai 14, 2005 9:04 pm
Mensagens: 7
Mando o código pelo jeito vc tá fazendo alguma besteira.


Voltar ao topo
 Perfil  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Qui Jan 21, 2010 3:37 pm 
Offline

Registrado em: Seg Mai 05, 2008 10:44 am
Mensagens: 20
Tá aí o código... a função é meio grandinha mas o que interessa são as duas primeiras linhas onde estão declaradas as variáveis que eu citei. Elas ainda não foram usadas em nenhuma parte do programa.
Código:
{
double modauxuo=1;
double modauxu=1;
double dx,dy,dz,num,nun,dtemp,t;
double Numi,Numo,Numit,Numot;
double FS,DIV,divX,divY,divZ;
register int i,j,k;
int iter,limit,cont,cta;
int pasost=0, plotam, auxt, incam;
double auxplotu, auxplotv, auxplotvel;//Variáveis auxiliares para acompanhamento
double auxcp=1, auxuo, auxu, auxuo1, auxu1;//Variável auxiliar para critério de parada


incam=tf*1000/numam;//Cálculo do valor de incremento para plotagem dos gráficos de acompanhamento
//FILE  *fa;

/////////////////////////////////////////////////////////////////
                        //    1: Función ARITMÉTICA      +
tipoFMD = 2;               //    2: Función PONDERADA       +
                        //    3: Función TRAPEZOIDAL     +
/////////////////////////////////////////////////////////////////
FS = 0.5;                  //     FACTOR DE SEGURIDAD       +
/////////////////////////////////////////////////////////////////
dtemp = 0.05;               // C/ctos SEG DESEA GRAVAR temp  +
/////////////////////////////////////////////////////////////////
nun = dtemp;
num = dtsai;
limit = 1000;
iter = 0;
cont = cta = 0;
Numit = Numot =0.0;
t = dt;
auxt=(t+0.00000005)*1000;
plotam=auxt;
Recupera(&t,&cont,&pasost,&nun,&num,&Numit,&Numot);
//  SALIDA: EVOLUCIÓN TEMPORAL  +++++++++++++++++++++++++++++++++
if(recup == 0)  {
   saidaCabecalho();
}
//  CÁLCULO DE L0S COEFICIENTES PARA pp  ++++++++++++++++++++++++
coeficientePP();
//Transferencia dos dados para a janela de acompanhamento
Acomp->Edit2->Text=ExtractFileName(X);
Acomp->Edit3->Text=ExtractFileName(Y);
Acomp->Edit4->Text=ExtractFileName(M);
Acomp->Edit5->Text=ExtractFileName(N);
// Limpa a série de dados do gráfico de acompanhamento
Acomp->Series1->Clear();//velocidade u
//Acomp->Series2->Clear();//velocidade v
Acomp->Series3->Clear();//Resíduo
  // Plotagem dos dados para tempo = 0
Acomp->Series1->AddXY(0.0,auxplotu,"",clRed);//Velocidade u
//Acomp->Series2->AddXY(0.0,auxplotv,"",clGreen);//Velocidade v
Acomp->Series3->AddXY(0.0,resm,"",clYellow);//Resíduo

//  LOOP PARA t  ++++++++++++++++++++++++++++++++++++++++++++++++
do {
   iter = 0;
   //Critério de parada quando atinge regime permanente

   if(auxcp > 0.0001)
   {
   //  LOOP PARA inter  +++++++++++++++++++++++++++++++++++++++++
   do {
      if(iter >= limit)
         Acomp->Edit15->Text="Não alcançou a tolerância em "+ExtractFileName(limit)+" iterações.";
         //printf("Nao alcanzou TOL em %i iteracoes \n",limit);  -> Código original
      iter += 1;
      //  ESTIMA CAMPO DE VELOCIDADES  +++++++++++++++++++++++++
      estimaU();
      //  CÁLCULO DEL CAMPO DE pp  +++++++++++++++++++++++++++++
      for(k=1; k<=L; k++)  {
         dz = zf[k]-zf[k-1];
         for(j=1; j<=N; j++)  {
            dy = yf[j]-yf[j-1];
            for(i=1; i<=M; i++)  {
               dx = xf[i]-xf[i-1];
               b[i][j][k] = ((u[i][j][k]-u[i-1][j][k])/dx
                        + (v[i][j][k]-v[i][j-1][k])/dy
                        + (w[i][j][k]-w[i][j][k-1])/dz)/ dt;
            }
         }
      }
      //////////////////////////////////////////////////////////
      if(ccz==0 || ccz==1) Sip();   //   Solución del sistema de +
      else Sip1();            //                      +
      //GCpC();               //    ecuaciones lineares    +
      //MSip();               //                      +
      //////////////////////////////////////////////////////////
      Acomp->Edit7->Text=ExtractFileName(t);
      //printf(" t=%lf",t);  -> Código original
      Acomp->Edit11->Text=ExtractFileName(noit);
      //printf("         noit=%i \n",noit);  -> Código original
      Acomp->Edit8->Text=ExtractFileName(dt);
      //printf(" dt=%e",dt);  -> Código original
      Acomp->Edit13->Text=ExtractFileName(resm);
      //printf("      resm=%e \n",resm);  -> Código original
      //  CORRIGE CAMPO DE PRESIÓN  ++++++++++++++++++++++++++++
      for(k=1; k<=L; k++)  {
         for(j=1; j<=N; j++)  {
            for(i=1; i<=M; i++)  {
               p[i][j][k] = p[i][j][k] + pp[i][j][k];
            }
         }
      }
      ccontornoP();
      //  CORRIGE LOS CAMPOS DE VELOCIDADES  +++++++++++++++++++
      corrigeU();
      //  CALCULA EL CAMPO DE TEMPERATURA  +++++++++++++++++++++
      if(dtaT != 0.0)    calculaT();
      //  DIVERGENTE  ++++++++++++++++++++++++++++++++++++++++++
      divMAX = 0.0;
      for(k=1; k<=L; k++)  {
         dz = zf[k]-zf[k-1];
         for(j=1; j<=N; j++)  {
            dy = yf[j]-yf[j-1];
            for(i=1; i<=M; i++)  {
               dx = xf[i]-xf[i-1];
               divX = (u[i][j][k]-u[i-1][j][k])/ dx;
               divY = (v[i][j][k]-v[i][j-1][k])/ dy;
               divZ = (w[i][j][k]-w[i][j][k-1])/ dz;
               DIV  = divX + divY + divZ;
               //divMAX = max(fabs(DIV[i][j][k]),divMAX);
               divMAX = (fabs(DIV) > divMAX) ?
                       fabs(DIV) : divMAX;
            }
         }
      }
      Acomp->Edit6->Text=ExtractFileName(iter);
      //printf(" iter=%i",iter);  -> Código original
      Acomp->Edit14->Text=ExtractFileName(divMAX);
      //printf("            divMAX=%e \n\n",divMAX);  -> Código original
      //  CRITERIO DE CONVERGENCIA  ++++++++++++++++++++++++++++
   } while (divMAX > TOL);

   //  TRANSFERENCIA PARA LOS TIEMPOS ANTERIORES  +++++++++++++++
   for(k=0; k<=L+1; k++)  {
      for(j=0; j<=N+1; j++)  {
         for(i=0; i<=M+1; i++)  {
            uo[i][j][k] = u[i][j][k];
            vo[i][j][k] = v[i][j][k];
            wo[i][j][k] = w[i][j][k];
         }
      }
   }
   for(k=1; k<=L; k++)  {
      for(j=1; j<=N; j++)  {
         for(i=1; i<=M; i++)  {
            u[i][j][k] = ADSu[i][j][k];
            v[i][j][k] = ADSv[i][j][k];
            w[i][j][k] = ADSw[i][j][k];
         }
      }
   }
   //  CALCULA VISCOSIDAD TURBULENTA  +++++++++++++++++++++++++++
   switch(ModTurb)  {
      case 1:      ModSmag();
         break;
      case 2:      ModDin();
         break;
      case 3:      //ModFEs();
         break;
   }
   //  CALCULA EL PASO DE TIEMPO  +++++++++++++++++++++++++++++++
   switch(cdt)  {
      case 1:      cta += 1;
         if(cta == 6)  cdt = 2;
         break;
      case 2:      dt = CFL()*FS;
         break;
   }
   //  CÁLCULO ESTADÍSTICO  +++++++++++++++++++++++++++++++++++++
   if(t >= (tf-tmdiat))  {
      //  NÚMERO DE NUSSELT ++++++++++++++++++++++++++++++++++++
      Numi = 0.0;
      Numo = 0.0;
      for(k=1; k<=L; k++)  {
         for(j=1; j<=N; j++)  {
            NuLi[j][k] = (T[0][j][k]-T[1][j][k]) /(xc[1]-xf[0]);
            NuLo[j][k] = (T[M][j][k]-T[M+1][j][k]) /(xf[M]-xc[M]);
            Numi += NuLi[j][k];
            Numo += NuLo[j][k];
         }
      }
      Numi = Numi/(N*L);
      Numo = Numo/(N*L);
      //  OUTRAS
      pasost += 1;
      Numit += Numi;
      Numot += Numo;
      MdiaTemp(t,pasost);
   }
   //  FRECUENCIA DE SALIDA PARA temp  ++++++++++++++++++++++++++
   if(t>=(nun-dt*0.8) && t<(nun+dt*0.8))  {
      saidaTemp(t);
      saidaSondasX(t);
      saidaSondasY(t);
      nun += dtemp;
   }
   //  CRITERIO PARA SALIDA DE DATOS  +++++++++++++++++++++++++++
   if(t>=(num-dt*0.8) && t<(num+dt*0.8))  {
      cont += 1;
      //saiTecpBin();
      saiTecplot(cont);
      saiRecupera(cont,pasost,nun,num,t+dt,Numit,Numot);
      num += dtsai;
   }
   if(plotam == auxt)//Plotagem na janela de acompanhamento
   {
      auxplotu=(uo[M/2][1][L/2]+uo[M/2][1][L/2+1])*0.5;
      auxplotv=(vo[M/2][0][L/2]+vo[M/2+1][0][L/2]+vo[M/2+1][0][L/2+1]+vo[M/2][0][L/2+1]+vo[M/2][1][L/2]+vo[M/2+1][1][L/2]+vo[M/2+1][1][L/2+1]+vo[M/2][1][L/2+1])*0.125;
      auxplotvel=sqrt(auxplotu*auxplotu+auxplotv*auxplotv);

      Acomp->Series1->AddXY(t,auxplotvel,"",clRed);//Velocidade u
      //Acomp->Series2->AddXY(t,auxplotv,"",clGreen);//Velocidade v
      Acomp->Series3->AddXY(t,resm,"",clYellow);//Resíduo
      plotam = plotam + incam;
   }
   //  CRITERIO PARA INCREMENTO DE TIEMPO  ++++++++++++++++++++++
   t += dt;
   auxt=(t+0.000000005)*1000;
   auxuo=uo[(M/2)][2][1];
   auxu=u[(M/2)][2][1];
   }
} while (t-dt < tf);
saidaTemp(t-dt);
//fclose(fa);
//  SALIDA DE PERFILES MEDIOS  ++++++++++++++++++++++++++++++++++
tfin = clock();
saiMedRms();
saiPMedio(cont,iter,pasost,t-dt,Numi,Numo,Numit,Numot);
saiplanoZ(pasost);
saiplanoX(pasost);
}


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Ter Jan 26, 2010 9:50 am 
Offline

Registrado em: Seg Jul 20, 2009 11:22 am
Mensagens: 17
você só vai enxergar essas variáveis se você parar o debugger dentro da função onde elas são declaradas. Experimente colocar um breakpoint na segunda linha (double modauxu=1;) e tenta ver se aparece o valor da variável "modauxuo".


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Qua Jan 27, 2010 11:07 am 
Offline

Registrado em: Seg Mai 05, 2008 10:44 am
Mensagens: 20
Eu já fiz isso... parei o debugger várias vezes dentro da função em variados pontos e no lugar do valor que deveria ser 1 aparece escrito as mensagens de erro que citei no primeiro post.


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Sex Fev 05, 2010 1:44 pm 
Offline
The CodeMaker
Avatar do usuário

Registrado em: Qui Abr 06, 2006 5:47 pm
Mensagens: 1312
Localização: Londrina
Imagino que o código postado seja o corpo de uma função, apesar de você ter omitido o nome dela. Mas as mensagens de erro dizem tudo. Essas duas variáveis estão presas ao escopo do bloco principal desta "suposta" função. Se quiser utilizá-las fora deste bloco terá de expandir seu escopo, tornando-as públicas. Mas o esquisito é que elas apenas são definidas neste bloco. Sequer são alteradas pelo código. Assim, para quê tê-las se não servem pra nada?

_________________
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Dom Fev 07, 2010 1:44 pm 
Offline

Registrado em: Seg Mai 05, 2008 10:44 am
Mensagens: 20
Já tentei tornar as variáveis públicas e também não adiantou. Essas variáveis foram declaradas porque serão usadas no final da função. Sempre depois de declarar uma variável eu executo o debugger pra ver se ela foi devidamente declaradas. Depois desta verificação é que eu escrevo o código onde a variável será usada. Como a verificação destas variáveis apresentou este erro, eu não implemenei a parte do código onde serão usadas. Elas vão servir para guardar dois valores em módulo no final do código.
Já me disseram que pode ser erro do compilador. Acha que pode ser isso?


Voltar ao topo
 Perfil E-mail  
 
 Título: Re: Undefined Symbol?!?!
MensagemEnviado: Qui Fev 11, 2010 11:29 am 
Offline
The CodeMaker
Avatar do usuário

Registrado em: Qui Abr 06, 2006 5:47 pm
Mensagens: 1312
Localização: Londrina
Pode ser do compilador. Inclusive, pode também ser erro que nada tem a ver com essas variáveis. O compilador, assim como qualquer software, não é infalível. Há situações, por exemplo, em que a falta de um ponto-e-vírgula pode fazer o compilador apontar um erro na configuração de uma malha. Ou qualquer outra coisa totalmente fora de contexto. Por algum motivo incerto e não sabido, o compilador não pôde analisar corretamente. Isso acontece direto. Portanto, desconfie das mensagens. Na maior parte do tempo estão corretas. Mas infelizmente, o compilador pode falhar.

Quanto à declaração de variáveis, não acho boa idéia executar o debugger cada vez que uma nova variável é incluída. Dá muito trabalho. Perde-se tempo demais com isso. Se aceita uma sugestão: apenas escreva seu código e teste-o, como 99,99% dos programadores fazem.
Até porque, se der problema, você terá de usar o debugger de qualquer forma.

_________________
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.


Voltar ao topo
 Perfil E-mail  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 8 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Google [Bot], MSN [Bot] e 8 visitantes


Enviar Mensagens: Proibido
Responder Mensagens: Proibido
Editar Mensagens: Proibido
Excluir Mensagens: Proibido
Enviar Anexos: Proibido

Procurar por:
Ir para:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB