Avatar billede freakofnature Nybegynder
09. april 2003 - 17:59 Der er 10 kommentarer og
1 løsning

Struct og Header

Dav igen...

Jeg har en header, hvori der bliver defineret en struct.
Men da min header bliver loaded flere gange, bliver structen loaded flere gange, hvilket medfører en fejl.

Hvordan kan jeg klare den?

Min Header ->

#ifndef SOPENGL_H__INCLUDED
#define SOPENGL_H__INCLUDED

#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>

// Defines The OpenGL Struct With The Name - GLWin
struct sOpenGL {

    const char*    className;

    HWND        g_hwnd;
    HINSTANCE    g_hInstance;
    HDC            gl_hDC;
    HGLRC        gl_hRC;

    bool        fullScreen;
    bool        isVisible;
} GLWin;


// Function Prototypes
LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE,HINSTANCE,PSTR,int);

bool CreateGLWindow(char*,GLsizei,GLsizei,GLint);
bool ChangeDisplayMode(GLsizei,GLsizei,GLint);
bool InitializeOpenGL(GLint);

GLvoid CloseGLWindow();
GLvoid SetViewPort(GLsizei,GLsizei);


#endif
Avatar billede arne_v Ekspert
09. april 2003 - 18:09 #1
Det lyder mystisk.

#ifndef SOPENGL_H__INCLUDED
#define SOPENGL_H__INCLUDED

skulle jo netop forhindre at den blev inkluderet flere gange !
Avatar billede narrr Nybegynder
09. april 2003 - 18:42 #2
Skal den være extern (structen) ?
Avatar billede freakofnature Nybegynder
09. april 2003 - 21:07 #3
den skal ikke være extern!
Avatar billede narrr Nybegynder
09. april 2003 - 21:32 #4
Lav den til en extern, så virker det.
Avatar billede segmose Nybegynder
10. april 2003 - 08:32 #5
Dit problem er ikke at din header bliver includeret flere gange men
at du har en variable der er defineret flere gang, dvs. du har GLWin
i flere moduler og linkeren så beklager sig, det løses ved at erklære
GLWin extern.

Du skal ændre til

struct sOpenGL {

    const char*    className;

    HWND        g_hwnd;
    HINSTANCE    g_hInstance;
    HDC            gl_hDC;
    HGLRC        gl_hRC;

    bool        fullScreen;
    bool        isVisible;
};
extern struct sOpenGL  GLWin;

og have

struct sOpenGL  GLWin;

i en .c/.cpp fil.
ps. narrr skulle måske lige svare også.
Avatar billede freakofnature Nybegynder
10. april 2003 - 16:38 #6
ok... det virker nu!

skal jeg vente med pointene til narrr svarer
Avatar billede segmose Nybegynder
10. april 2003 - 17:30 #7
ja.
Avatar billede narrr Nybegynder
10. april 2003 - 18:36 #8
Svar.. :)
Avatar billede narrr Nybegynder
10. april 2003 - 21:32 #9
Hov, det blev vist ikke til et svar :) Nå, whatever
Avatar billede freakofnature Nybegynder
11. april 2003 - 16:27 #10
jeg kan lave en ny tråd, hvor du kan få dine velfortjente point:)
Avatar billede narrr Nybegynder
11. april 2003 - 17:07 #11
Ej, det er ikke nødvendigt. Ellers tak.
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