C-Programmierung "error: NULL undeclared"
Hallo zusammen,
ich programmiere zur Zeit einen Roboter als Facharbeit für Physik\Informatik. Als Bausatz habe ich die ASURO Platine der Firma Arexx. Beim Programmieren tritt jetzt folgendes Problem auf: Es gibt in der Bilbliothek <time.h> die Fkt difftime, die mir die Differenzzeit zweier Stellen ausgibt. Als Quelltext sieht das wie folgt aus:
Code:
Eingebunden oben ist nur die Header-Datei "asuro.h".
....
#include "time.h" ... time_t startzeit,endzeit; double diff; startzeit=time(NULL); diff=0; while(diff != 5) { diff=difftime(endzeit,startzeit); endzeit=time(NULL) } Nun kommt der Fehler:
Code:
Soweit so gut, nun habe ich ein paar Biblitoheken durchsucht
..error: `NULL` undeclared (first use in this function)
..error: (Each undeclared identifier is reported only once ..error: for each function it appears in.) und habe dann die Header "stdlib.h" und "stddef.h" hinzugefügt, nun kommt folgender Fehler:
Code:
[Pfad]..: undefined reference to `time`
........: undefined reference to `difftime` Kann mir da jemand helfen? |
Re: C-Programmierung "error: NULL undeclared"
es muss
Code:
heißen. mit < und > statt " (genauso bei allen Standard-Bibliotheksheadern. Also auch stdlib,...)
#include <time.h>
Mit
Code:
lädts du nur eine Datei (datei.h) aus dem Ordner, wo sich dein Projekt befindet. Mich wundert, dass der Compiler das nicht angemeckert hat.
#include "datei.h"
pitti |
Re: C-Programmierung "error: NULL undeclared"
daran liegt es nicht.
Als "Schreibprogramm" benutze ich Programmers Notepad 2. Ich habe das jetzt mal mit <..> versucht, treten aber immer noch diesselben Fehler auf! |
Re: C-Programmierung "error: NULL undeclared"
Gibt es vielleicht eine entsprechende Headerfiel im Verzeichnis, welche dann anstatt der stnadardmäßigrn includiert wird?
ist stdlib.h eingebunden (da wird NULL m.W. deklariert) |
Re: C-Programmierung "error: NULL undeclared"
Ich glaube NULL ist entweder in stdlib.h oder stdio.h deklariert. Wenn das nich hilft, dann versuche es mit 0, oder (void *)0.
|
Re: C-Programmierung "error: NULL undeclared"
Guten Morgen an Neujahr und allen ein frohes neues Jahr,
ich habe Deinen Quelltext mal durch die C - Personality von BDS 2006 durchlaufen lassen und kann Dir nur mitteilen, dass folgender Code-Ausschnitt sich sauber compilieren lässt:
Code:
Ich musste Deinen Code-Abschnitt in eine Prozedur einpacken, ansonsten habe ich nicht viel verändert.#include <time.h> void TestIt() { time_t startzeit, endzeit; double diff; startzeit=time(NULL); diff=0; while(diff != 5) { diff=difftime(endzeit,startzeit); endzeit=time(NULL); } } Verändere mal die Reihenfolge der Include-Dateien. Wenn die angesprochene azuro.h (oder so ähnlich) nicht sauber ist, dann kann es passieren, dass einige andere Header-Dateien nicht sauber eingebunden werden. Gruß Stefan Schramm |
Re: C-Programmierung "error: NULL undeclared"
@ sniper_w:
Das kommt darauf an, welche Implememtierung (bzw. welche Version des Standards) man nutzt. Borland setzt den Industrie-Standard dahingehend um, dass sie NULL in der Datei _null.h definieren (in Abhängigkeit davon, ob _cplusplus definiert ist oder nicht. Gruss Stefan Schramm |
Re: C-Programmierung "error: NULL undeclared"
Also ich hab jetzt mal alles andere aus meiner
Datei gelöscht, sodass nur noch besagter Teil der Funktion dort steht, ich habe den Quelltext von Stefan Schrammel kopiert und engefügt, sodass der gesamte Quelltext nun wie folgt aussieht:
Code:
#include <stdio.h>
#include <stdlib.h> #include <time.h> int main(void) { time_t startzeit, endzeit; double diff; startzeit=time(NULL); diff=0; while(diff != 5) { diff=difftime(endzeit,startzeit); endzeit=time(NULL); } return 0; } Die komplette Fehlermeldung ist folgende:
Code:
-------- begin --------
avr-gcc --version avr-gcc (GCC) 3.3.1 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o test.c: In function `main': test.c:7: warning: `endzeit' might be used uninitialized in this function avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm test.o(.text+0xc): In function `main': D:\Facharbeit\Dateien\Beispielprogramm\ASURO_src\Unser Programm (1)/test.c:10: undefined reference to `time' test.o(.text+0x30):D:\Facharbeit\Dateien\Beispielprogramm\ASURO_src\Unser Programm (1)/test.c:14: undefined reference to `difftime' test.o(.text+0x3a):D:\Facharbeit\Dateien\Beispielprogramm\ASURO_src\Unser Programm (1)/test.c:15: undefined reference to `time' make: *** [test.elf] Error 1 > Process Exit Code: 2 Kann das evtl an meinem Programm Programmer Notepad 2 liegen? |
Re: C-Programmierung "error: NULL undeclared"
Ich glaube nicht, dass es am Programmer Notepad liegt. Guck doch mal in der Datei time.h nach, ob da überhaupt die time-Funktion definiert ist. Wenn dein Compiler für nen Roboter kompiliert, kann es ja sein, dass die ein paar Funktionen gar nicht dabei haben um Platz zu sparen.
pitti |
Re: C-Programmierung "error: NULL undeclared"
Die Bib time.h habe ich von extern hinzugefügt,
die gehört net zur Standardbiblio von Asuro. Zuerst hat er die Bibliotheken ja auch nicht erkannt, ich habe sie dann allerdings ein wenig bearbeitet, und nun gehen sie. (bearbeitet meint nicht dass ich groß was verändert habe, sondern ich habe zwei kleine Fehler verbessert, die aber unabhängig von der time() Fkt sind |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz