Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C-Programmierung "error: NULL undeclared" (https://www.delphipraxis.net/83351-c-programmierung-error-null-undeclared.html)

icqgoofy 31. Dez 2006 16:05


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:
....
#include "time.h"
...
time_t startzeit,endzeit;
double diff;

startzeit=time(NULL);
diff=0;
while(diff != 5)
{
  diff=difftime(endzeit,startzeit);
  endzeit=time(NULL)
}
Eingebunden oben ist nur die Header-Datei "asuro.h".
Nun kommt der Fehler:
Code:
..error: `NULL` undeclared (first use in this function)
..error: (Each undeclared identifier is reported only once
..error: for each function it appears in.)
Soweit so gut, nun habe ich ein paar Biblitoheken durchsucht
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?

pitti platsch 31. Dez 2006 16:13

Re: C-Programmierung "error: NULL undeclared"
 
es muss
Code:
#include <time.h>
heißen. mit < und > statt " (genauso bei allen Standard-Bibliotheksheadern. Also auch stdlib,...)
Mit
Code:
#include "datei.h"
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.

pitti

icqgoofy 1. Jan 2007 11:04

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!

mkinzler 1. Jan 2007 11:09

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)

sniper_w 1. Jan 2007 11:22

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.

Schrammel 1. Jan 2007 11:26

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:

#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);
      }
   }
Ich musste Deinen Code-Abschnitt in eine Prozedur einpacken, ansonsten habe ich nicht viel verändert.

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

Schrammel 1. Jan 2007 11:37

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

icqgoofy 1. Jan 2007 12:09

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?

pitti platsch 1. Jan 2007 13:02

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

icqgoofy 1. Jan 2007 15:16

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.
Seite 1 von 2  1 2      

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