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

Techie

Alter Hase

  • »Techie« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

1

10.07.2013, 17:58

TriBase hokuspokus!

Hi,
ich mal wieder.
Diesmal geht es um eine Frage zur TriBase. Die Headerstruktur in TriBase sieht etwa so aus:
- TriBase.h -> Inkludiert alle header der engine
- ExplosionTribaseblabla.h -> wird inkludiert von TriBase.h
- ExplosionTribaseblabla.cpp -> inkludiert TriBase.h

Nun wenn ich dies genauso mache ( z.B.: für eigene Projekte ) gibt es bei mir 2 Probleme:
1) IntelliSense gibt auf
2) Compiler wie MinGW wollen ( können ) dies garnicht kompilieren.

Da aber bei der CD eine funktionierende Binary dabei ist; frage ich mich ob ich da etwas aus Unachtsamkeit übersehen habe.

Gruß Techie
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Techie« (10.07.2013, 18:38)


Crazy007

Treue Seele

Beiträge: 186

Wohnort: Tirol

  • Private Nachricht senden

2

10.07.2013, 21:15

Was meinst du mit: Kann nicht kompiliert werden?
Das ganze liegt wahrscheinlich daran dass alles doppelt verlinkt wird. Das ganze wird so gelöst dass man z.b. in TriBase.h zu beginn #define TRIBASE_H schreibt.
Ich weiß nicht wie sich das nennt auf jeden Fall weiß der compiler dann dass er das ganze nur einmal verlinken darf.
Hoffe ich konnt helfen, aber vielleicht wissen andere mehr dazu.
Der Error sitzt meistens vor dem Bildschirm! :D

FSA

Community-Fossil

  • Private Nachricht senden

3

10.07.2013, 21:21

Soweit ich weiß gibt es unter MinGW kein #pragma once. Daher kommen wohl die Fehler.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

4

10.07.2013, 21:34

Stichwort: Includeguard.

5

10.07.2013, 21:36

GCC (und damit MinGW) unterstützen sehr wohl #pragma once. Soweit ich weiß, ist dies jedoch (noch) nicht im Standard.

Zum Thema: Was du (wahrscheinlich [1]) benötigst sind Include-Guards. Du erwähntest ja selbst, dass es um deine eigenen Projekte geht. Diese können wie folgt aussehen und sollten deine Header-Dateien "einrahmen":

C-/C++-Quelltext

1
2
3
4
5
6
#if !defined(MYFOLDER_MYHEADER_MYEXTENSION)
#define MYFOLDER_MYHEADER_MYEXTENSION

// Your stuff here.

#endif


Darüber hinaus sollten nur die Header eingebunden werden, welche auch wirklich benötigt werden. Gerade in Header-Dateien reicht oft eine Vorwärtsdeklaration (forward declaration) aus.

Grüße ... bwbg

[1] "Geht nicht" ist keine sinnvolle Fehlerbeschreibung und führt nur zu Rumratereien oder Schüsse ins Blaue.

Zitat

Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.

https://bitbucket.org/bwbg

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

10.07.2013, 22:02

Das ganze liegt wahrscheinlich daran dass alles doppelt verlinkt wird. Das ganze wird so gelöst dass man z.b. in TriBase.h zu beginn #define TRIBASE_H schreibt.
Allein mit einem define wird man es wohl nicht lösen können. Kleiner Tipp: Lies Dir die Pre-Processor-Statements durch, die sind wichtig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Techie

Alter Hase

  • »Techie« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

7

11.07.2013, 18:56

Erstmal Danke für die ganzen Antworten :)
Das mit den Includeguards hört sich viel versprechend an, ich werd's versuchen

Dann noch eine andere Sache:

C-/C++-Quelltext

1
2
3
4
5
#ifndef TRIBASE_DLL
#define DLL __declspec( )
#else 
ädefine DLL __declspec( )
#endif


IntelliSense will das einfach nicht schlucken. Wenn ich das machen, stürzt es ab ( bzw. manchmal nur in der Datei, aber auch manchmal im ganzen Projekt ). :(
Das Errorchecking brauche ich zwar nicht aber diese Schreibunterstützung bei langen Namen fehlt mir :)
Wie zur Hölle will man "LPCREATESTRUCT(lParam))->lpCreateParams" ohne zu spicken, richtig schreiben ?!

EDIT: Ich habe entdeckt, dass, wenn man das Projekt neuöffnet und etwa 10 min wartet OHNE etwas zu tippen, es mit IntelliSense wieder funktioniert.

Gruß Techie
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Techie« (11.07.2013, 19:21)


Werbeanzeige