hat ich ac Funktion hätte, die eine falsche Verhalten hat und ich so etwas wie diese nie vielleicht jemand gesehen, mich über dieses völlige Rätselunter Linux, c Funktion verrückt Verhalten
so in test.c ist die Funktion aufklären könnte:
float wtf(int c)
{
return 0.0;
}
in main.c
float a=wtf(0);
float b=wtf(2);
float c=wtf(3);
float d=wtf(4);
printf("%f %f %f %f\n",a,b,c,d);
und das Ergebnis:
0.000000 2.000000 3.000000 4.000000
Warum wird der Parameter irgendwie von der Funktion ausgegeben, die 0 ausgeben soll?
hier ist, wie ich es unter Linux kompilieren
cc -std=c99 -I"/usr/include/pd" -DPD -DVERSION='"0.0"' -fPIC -O6 -funroll-loops -fomit-frame-pointer -Wall -W -g -o "main.o" -c "main.c" -lpng -lbcm2835 -Wno-unused-parameter -Wno-implicit-function-declaration -Wno-unused-variable -Wno-unused-but-set-variable -Wno-comment -lc
kann mir jemand helfen? Grüße
Wenn es wahr ist, dann ist es wahrscheinlich ein Compiler Bug. Ich denke, es ist besser für Sie, ein komplettes Beispiel für uns bereitzustellen, um Ihren Code zu testen. Das Wichtigste ist, was ist Ihre GCC-Version? – HuStmpHrrr
Erfolgt das auch, wenn Sie den gesamten Code in eine einzige Datei schreiben und eine abgespeckte Befehlszeile verwenden ('cc -std = c99 -pedantic singlefile.c')? – pmg
Was ist Ihre Architektur, Betriebssystem und Version von GCC? Könnten Sie versuchen, unnötige Argumente zum Compiler zu entfernen und Ihren Code auf eine einzelne Datei zu vereinfachen und das Ganze hier zu veröffentlichen, damit andere das Problem reproduzieren können? (Ich habe versucht, es zu reproduzieren und bekam die erwartete Ausgabe.) Zeigen Sie auch die Befehle, die das vollständige Programm kompilieren, gerade jetzt kompilieren Sie nur main.o, aber Sie zeigen nicht, wie Sie die endgültige ausführbare Datei erstellt haben. –