Avatar billede twinsen Nybegynder
16. februar 2004 - 22:46 Der er 7 kommentarer og
1 løsning

hvad er der med NULL og C?

Ok, måske et rimelig dumt spørgsmål, men jeg er ny i C.

compileren siger:

`NULL' undeclared (first use this function)

er NULL ikke noget indbygget?
Der står skrevet i min C bog, at NULL i C kun er et synonym for adressen 0, og at compileren garanterer, at adressen aldrig bliver brugt til at lagre noget på. Derfor anvendes synonymet for læselighedens skyld.

Hvorfor fatter min compiler så ikke det??

- Troels
Avatar billede erikjacobsen Ekspert
16. februar 2004 - 22:47 #1
prøv null i stedet for NULL
Avatar billede arne_v Ekspert
16. februar 2004 - 22:48 #2
#include <stdlib.h>

eller

#include <cstdlib>
Avatar billede arne_v Ekspert
16. februar 2004 - 22:49 #3
Den er defineret i stdlib.

Og det er NULL (null er i Java og C#).
Avatar billede erikjacobsen Ekspert
16. februar 2004 - 22:57 #4
Ja, selvfølgelig Arne. Min hukommelse skal snart til det årlige eftersyn ;)
Avatar billede twinsen Nybegynder
16. februar 2004 - 23:49 #5
Aha! Så er det derfor! hmm... Ligenu har jeg gang i et kursus i operativsystemer, hvor der er nogen indledende opgaver til den store opgave, hvor man skal lave en kerne. Min opgave her er altså helt specifikt at implementere en C funktion i assembler, og anvende den i et C++ program. Ved I så også, om NULL direkte peger på adressen 0, eller om det er noget fup? Jeg mener, for at kunne lave noget assembler der virker, er jeg ligesom nødt til at vide det.

Jeg opfatter dog spørgsmålet som besvaret af arne v, og han får selvfølgelig pointene ligegyldigt hvad.

tak for det!

forresten! Endnu en ting. Når der skal implementeres en kerne findes standard bibliotekerne jo ikke (der er ligesom ikke noget operativsystem de kan benytte sig af), men det ville nok være en gevaldig hjælp at have NULL til rådighed alligevel. Kan man så bare definere den som en makro?, altså:

#define NULL = 0;

- Troels
Avatar billede arne_v Ekspert
17. februar 2004 - 10:02 #6
#define NULL (void *)0

er vist det man normalt bruger.

C standarden siger at 0 castet til en pointer skal give NULL. Den siger ikke
at de 32 bit skal være numerisk 0. Men det er de altid i praksis. De meget
C kyndige kan huske en eller anden obskur maskine for 20 år siden, hvor 0 ved
castingen blev til noget andet end numerisk 0. Men ...
Avatar billede arne_v Ekspert
17. februar 2004 - 10:02 #7
svar
Avatar billede twinsen Nybegynder
17. februar 2004 - 10:30 #8
takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester