JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=65f43ea7f5ef2e5d467a74064c181775Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

"freeStyle"-Lösung zum Module ohne ERROR #include

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
andijota
Junior JLI'ler



Anmeldedatum: 07.11.2002
Beiträge: 66
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 02.05.2004, 19:34    Titel: "freeStyle"-Lösung zum Module ohne ERROR #include Antworten mit Zitat

/// SuchWorte: Programm in Module aufteilen ///
Das Erforschen fuer die richtige stelle und reihenfolge von Modulen/#include -Files kann man mit folgender Vorgehensweise umgehen. ZB um weitgehend unbekannten code mischen, Wenn das Programm erstmal wie gewuenscht läuft, is ja auch noch gelegenheit zum optimieren.
Über Meinungen freu ich mich.
konkret hab ich mir was aus CubeMap und Donuts4 (von DX9SDK), und Szene3D (aus JLI. 9 Buch) zusammengebastelt.
Ich benutze hier zur erläuterung ausschnitte aus dem GameLoopDemo das im
JLI-Spieleprogrammierung
Forum zu finden ist.

andi

Code:

////////////////////////////////////////////////////////////////
// WinMain.cpp:

/* Copyright (C) 2002 / 2003 AFE-GmdG */

/* Es _DARF_ nur WinMain.h includiert werden, weitere Header werden dort eingebunden */
#include "WinMain.h"


// bei freestyle mach ich eine Ausnahme:
// nur EINMAL einbinden
#define     _frestyle_6_
#    include "console.h"
#    include "console.cpp"
// vergessen und NIE wieder
#undef       _frestyle_6_


// auch .cpp so einbinden und trotzdem ins projekt aufnehmen
// wenn die Dateien nur #include-t werden und nur im Ordner "Externe Abhaengigkeiten" erscheinen,
// sind die class-es nicht im Arbeitsbereich und koennen nicht
// einfach von der Klassenansicht aus angesprungen werden.
// zb. kann man die dateien nach der ersten uebersetzung vom Ordner
// "Externe Abhaengigkiten"  in "Header-Dateien" bzw. "Quellcodedateien" ziehen



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
  // _frestyle_6_ Beispiel
  open_console();
  //
  CGameLoopDemo *lpGameLoopDemo; // Instanzvariable für das Hauptprogramm
  BOOL RetVal=FALSE; // Testvariable des Rückgabewertes
  lpGameLoopDemo=new CGameLoopDemo(); // GameLoopDemo Instanziieren
  if(lpGameLoopDemo->Init(hInstance)) // GameLoopDemo Initialisieren
    RetVal=lpGameLoopDemo->Run();     // ... und ausführen
  lpGameLoopDemo->Done();             // Aufräumarbeiten
 
  delete lpGameLoopDemo; // ->Damit die Destruktoren unterhalb von GameLoopDemo aufgerufen werden
  // _frestyle_6_ Beispiel
  close_console();
  //
  if(!RetVal) // Wenn der Rückgabewert false ist...
    return(-1); // ... Programm mit Fehlercode -1 beenden
  return 0; // sonst Programm normal beenden
}


Code:


//#include <console.h> 


/////////////////////////////////////////////////////////////////
// <so steht s im Lehrbuch>:begin
/*
  #ifndef _console_h_666
  #define _console_h_666
  #    if _MSC_VER > 1000
  #pragma once
  #    endif // _MSC_VER > 1000
*/
// </so steht s im Lehrbuch>:end ///////////////////////////////


// trotzdem kommt bei nachlaessiger #include-Planung der Fehler wie:
// WinMain.obj : error LNK2005: "void __cdecl open_console(void)" (?open_console@@YAXXZ) bereits in GameLoopDemo.obj definiert
// bevor man lang forscht, hilft gegen diesen ERROR mein
// "freestyle - #include - Konzept" //begin ////////////////////
#ifdef    _frestyle_6_
// "freestyle - #include - Konzept" //end //////////////////////


//#inc lude "STDAFX.H" //nur fuer CSt ring mach ich das

#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <iostream.h>


#ifndef _WIN32_WINDOWS
#    include <windows.h>
#endif


void open_console();
void close_console();


#endif // _frestyle_6_


extern void open_console();
extern void close_console();
 

/*
  #endif //_console_h_666 // Lehrbuch
*/
/////////////////////////////////////////////////////////////////

Code:

//#include <console.h> 


/////////////////////////////////////////////////////////////////
// <so steht s im Lehrbuch>:begin
/*
  #ifndef _console_h_666
  #define _console_h_666
  #    if _MSC_VER > 1000
  #pragma once
  #    endif // _MSC_VER > 1000
*/
// </so steht s im Lehrbuch>:end ///////////////////////////////


// trotzdem kommt bei nachlaessiger #include-Planung der Fehler wie:
// WinMain.obj : error LNK2005: "void __cdecl open_console(void)" (?open_console@@YAXXZ) bereits in GameLoopDemo.obj definiert
// bevor man lang forscht, hilft gegen diesen ERROR mein
// "freestyle - #include - Konzept" //begin ////////////////////
#ifdef    _frestyle_6_
// "freestyle - #include - Konzept" //end //////////////////////


//#inc lude "STDAFX.H" //nur fuer CSt ring mach ich das

#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <iostream.h>


#ifndef _WIN32_WINDOWS
#    include <windows.h>
#endif


void open_console();
void close_console();


#endif // _frestyle_6_


extern void open_console();
extern void close_console();
 

/////////////////////////////////////////////////////////////////
/*
  #endif //_console_h_666
*/


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum