PDA

View Full Version : [C] Problemi strani con funzione


salvodel
20-06-2008, 15:06
Salve a tutti,
ho un po di problemi con la seguente funzione:
float fun_tetag(float sigma, float pcoef[])
{
int j;
float polinomio;

polinomio=0;
/*for(j=0;j<6;j++)
polinomio+=pcoef[j]*pow(sigma,6-j);
polinomio+=pcoef[6];*/

polinomio=180;
return polinomio;
}

Sotto Linux se nel main facciovoid main()
{
float polinomio;
float P[7];
....
polinomio=fun_teta(sigma, P);
printf("polinomio=%f", polinomio);
...
} ottengo 1127481344.000000. Perché non mi da 180?

Problema sotto Windows con MSV
Perché se creo un file .c con la precedente funzione e un file header cosi:
float fun_tetag(float sigma, float pcoef[]);
si blocca e da la colpa a pcoeff(ecco perche l'ho commentata) mentre se copio la funzione nel main va tutto liscio? Invece se compilo con gcc sotto linux, escluso il problema numerico in uscita, non mi crea problemi l'array.
Sono un po confuso e non so che pesci prendere, sopratutto perché mi sembra una cosa cosi banale ma evidentemente mi sta sfuggendo qualche regolina del C.:help:
Grazie a tutti.

ilsensine
20-06-2008, 15:48
Sotto Linux se nel main faccio
void main()...
ottengo 1127481344.000000. Perché non mi da 180?
Difficile da dire da quei brandelli di codice, ma ho il sospetto che è un problema di visibilità del prototipo. Compila attivando i warning (-Wall) e vedrai che il compilatore ti riporta "implicit declatation xxx" da qualche parte.

salvodel
20-06-2008, 16:10
Difficile da dire da quei brandelli di codice, ma ho il sospetto che è un problema di visibilità del prototipo. Compila attivando i warning (-Wall) e vedrai che il compilatore ti riporta "implicit declatation xxx" da qualche parte.

Se vuoi ti porto una pietra se non ce l'hai?:ncomment:
Mi ero scordato di metere una cosa:stordita:
#include "header.h"
:muro:
Il problema è che ero partito con le funzioni nel main e poi le ho tolto....e mi sono dimenticato di mettere gli inluce.
Grazie mille!

PS
Per ora ho provato solo sotto Linux ma spero che sia per lo stesso motivo si bloccava sotto Windows anche se l'errore era diverso.