Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.05.2004, 01:33

PreCompiler

Hi, ich verstehe nicht die Verwendung von:

#ifndef GRAFIK_ENUM_H
#define GRAFIK_ENUM_H

Was genau sagt mir das, bzw. wofür brauch man das überhaupt??

2

23.05.2004, 03:55

Das ist ganz einfach. Damit der dazwischenliegende Code nicht zweimal in einem Modul vorhanden ist. Sonst bewirft einem der Compiler immer mit Fehlermeldungen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

3

23.05.2004, 11:28

Ich muss gestehen, dass ich mit der Antwort nichts anfangen kann, weil ich es immer noch nicht verstanden habe.

Kannst du es mir vielleicht an einem Beispiel erklären.

sorry

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

4

23.05.2004, 11:59

Wenn du eine Header einbindest, dann sollte es so aussehen:

#ifndef _TEST_
#define _TEST_

// hier folgt dann die ganze Header und am ende nochmal:

#endif


Daraus folgt, dass die Sachen nur definiert werden, wenn sie es noch nicht sind: wenn nicht definiert (ifndef), werden sie definiert (define)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

23.05.2004, 12:00

Also wenn man einen header einbindet kann es vorkommen, das er zweimal eingebunden wird. Dies führt zu einem Fehler. Den kann entweder umgehen indem man alles Anweisungen im Header mit
#ifndef(wenn nicht definiert)
#define(definiere)

#endif(und hier ist das ende)
einklammert oder indem man dem linker sagt das es nicht so schlimm ist(mit /force; meine Methode ;D ).

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

6

23.05.2004, 12:02

Tja, ich denke unsere Posts sind ziemlich ähnlich ;)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

23.05.2004, 12:29

:ohoh:
da war einer schneller..............................

8

23.05.2004, 14:09

Man kann auch einfach am Anfang jeder Header

Quellcode

1
#pragma once

schreiben, das hat den selben Effekt und ist einfacher. Aber ich glaub das geht nicht bei jedem Compile, aber bei VC++ 6. 0 auf jeden Fall. (So mach ichs nämlich immer)

9

23.05.2004, 16:24

Ja Ok, das macht Sinn :)

Ich bin nur immer bei den ganzen PreCompiler Aufrufen vorsichtig, weil es meist bessere wege gibt.
Wie z.B. statt #define lieber const zu nehmen usw.

Aber wenn das so gemacht wird, dann werde ich mir das Merken.

Thx @ll

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

23.05.2004, 16:42

die #pragmas sind compilerspezifisch, aber unter VC++ solltes hinhaun.

Werbeanzeige