[ peka @ 04.12.2004. 01:36 ] @
Ok, ja bi da napravim nekakvu, kao, dx biblioteku koja ce da se satoji iz dva fajla dxlib.h i dxlib.cpp. E sad, sve promjenljive su mi globalne. Znaci:

dxlib.h:

extern LPDDRAWSURFACE7 primary;
...
void PutPixel(int, int, LPDDRAWSURFACE);
...

dxlib.cpp:
#include <ddraw.h>
LPDDRAWSURFACE7 primary;
...
void PutPixel(int, int, LPDDRAWSURFACE)
{ ... }
...


Ovo (tj. dxlib.h) nece da se iskomapjlira zato sto LPDDRAWSURFACE7 nije definisano u dxlib.h. Rjesenje je da stavim #include <ddraw.h> u dxlib.h ali ne zelim da imam #include u hederu, a to uostalom i nece da se iskompajlira ako #includeisem dxlib.h u vise fajlova ("***.lib object already defined in ***"), a koristim i #ifdef/endif za svaki heder. E sad, ja sam vidio da moze da se napravi heder koji deklarise neke tipove koji nisu definisani u tom hederu, tj. da se deklarise npr. LPDDRAWSURFACE7 bez #include <ddraw.h> (kod Lamothea u Trick of the 3d game prog. gurus) ali kod mene ne moze. Help...

P.S. Dobro, ja ovde koristim dx ali isto mi se desava i kad hocu da deklarisem globalni npr. extern FILE *logfile bez #include <stdio.h> u tom hederu. Tako da pitanje pripada ovoj kategoriji, cini mi se... :)
[ Srki_82 @ 05.12.2004. 00:40 ] @
Ne znam da li sam te bas dobro razumeo... ali ovo bi trebalo da radi:

dxlib.h:
Code:

#ifndef DXLIB_H
#define DXLIB_H

#include <ddraw.h>
extern LPDDRAWSURFACE7 primary;
...
void PutPixel(int, int, LPDDRAWSURFACE);
...

#endif //#ifndef DXLIB_H


dxlib.cpp:
Code:

#include <ddraw.h>
#include "dxlib.h"
LPDDRAWSURFACE7 primary;
...
void PutPixel(int, int, LPDDRAWSURFACE)
{ ... }
...
[ peka @ 08.12.2004. 00:15 ] @
Pa, rekao sam da stavljam #ifndef/#define u svaki heder. :) I to ne funkcionise... Kao da ih zanemaruje kompajler. Jel ima negdje u VC++ 6.0 da se podesava nesto u vezi toga?
[ filmil @ 08.12.2004. 00:30 ] @
Skoro sigurno je greška negde u tvom kodu. Probaj da propustiš datoteke samo kroz pretprocesor kako bi video šta se stvarno dešava. Za gcc je odgovarajući prekidač -E a za druge prevodioce moraš da pogledaš u  uputstvo.

f
[ Srki_82 @ 08.12.2004. 07:43 ] @
Ovaj... rekao si:
Citat:
peka: #ifdef/endif


Proveri da li je stvarno ifdef ili ifndef... razlika je ogromna ;)