PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: stdio.h / stddef.h defekt?



ActionNews
07-11-2003, 20:58
Grüß euch!

Bitte nicht gleich hauen fange mit C programmieren eigentlich gerade erst an, falls es ein ganz dummer Fehler meinerseits ist ;) :D.

Also ich möchte ein selbst geschriebenes Program unter Linux kompilieren. Dabei werden auch auf Dateien zugegriffen (gelesen und geschrieben) allerdings scheint dann plötzlich die stdio.h nicht mehr zu funktionieren. gcc meldet folgenden Fehler:

In file included from /usr/include/stdio.h:34,
from audio2.c:15:
/usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h:213: error: syntax error before "typedef"
An besagter Stelle in Zeile 213 der stddef.h wird anscheinend ein Variablentyp "size_t" definiert, den ich für fread/fwrite brauche.
Zusätzlich habe ich folgende libs eingebunden:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


Das seltsame ist, das gleiche Program wird an der Uni unter MS Visual C++ einwandfrei compiliert.
Hat vielleicht jemand von euch einen Tipp? Immerhin hab ich schon herausgefunden, dass man den gcc mit der Option "-lm" starten muss wenn man die math.h einbinden will.

Danke im Voraus!

Ach ja... ich verwende SuSE 8.2 auf einem Athlon TB C 1000 und "gcc (GCC) 3.3 20030226 (prerelease) (SuSE Linux)" (laut "gcc --version").

CU ActionNews

SeeksTheMoon
07-11-2003, 21:37
die Header sind nicht kaputt und -lm braucht man für Standardprogramme nicht zu benutzen.
Du hast sicher irgendwas im Quelltext, was nicht ganz sauber ist, aber das kann man nur sehen, wenn Du den Code hier postest.

ActionNews
08-11-2003, 08:10
Also gut ich hänge den Code mal an.
Zur Info: Das Programm soll aus einer wavehead.bin einen Wave-header einlesen und daran dann ein 1 Sekunde dauerndes Signal anhängen (Sinusforum, Rechteck oder konstante Amplitude). Form des Signal, Frequenz und Amplitude (0-100% des Wertebereichs) soll man wählen können. Naja eine Informatik-Übungsaufgabe halt.

BTW: ohne -lm findet er die sinusfunktion nicht obwohl math.h eingebunden ist!

EDIT: :confused: Wo ist der Anhang geblieben?

CU ActionNews

ActionNews
08-11-2003, 08:14
Ich hoffe jetzt klappt es ? ..... EDIT: Ah ja da ist er ja :D!

Ach vielleicht habt ihr dann auch gleich ein paar Tipps was man besser machen könnte bzw. Was ich in Zukunft anders besser lösen könnte. Danke.

CU ActionNews

anda_skoa
08-11-2003, 16:18
In dieser Zeile


Parameter_einlesen(&signal, &SigFrequ, &Ampl)

Fehlt das abschliessende Semikolon ;

Der Prototyp der Funktion wavedatei_speichern stimmt weder im Namen noch in der Parameteranzahl mit der Funktionsdefinition überein.

@SeeksTheMoon: natürlich muss man mit -lm linken, wenn man Befehle aus math.h benutzt.

Sonst klappt aber alles, wenn man die Fehler beseitigt.

Ciao,
_

ActionNews
09-11-2003, 08:14
Ah ok danke :)! Sind natürlich blöde Fehler!
DFas kommt davon wenn man nach dem Fehler sucht und dann im Programm rumpfuscht :(!

Naja egal, also ich hab das Programm wie im Anhang geändert, allerdings erhalte ich jetzt folgende Fehlermeldung:


/tmp/cc7L1WCe.o(.text+0xdb): In function `main':
: undefined reference to `wavedatei_speichern'
collect2: ld returned 1 exit status

Hmm... was mach ich denn jetzt wieder falsch :(?

CU ActionNews

ActionNews
09-11-2003, 08:14
Grumml Anhang vergessen :(!

wraith
09-11-2003, 08:35
int main() {
if ( wavedatei_speichern( Vektor, argv[0], argv[1])) return EXIT_FAILURE;
return EXIT_SUCCESS;
}
...
int wavdatei_speichern(short *V, char Programname[], char Dateiname[])
{

Bei der Definition fehlt ein 'e'.

ActionNews
09-11-2003, 10:15
Args :(! Danke! Da hätte ich auch selber drauf kommen können :rolleyes: :o !

EDIT: Danke jetzt geht es :)!

CU ActionNews