Inclusion d'un header dans plusieur fichier

Résolu
Pinky84 Messages postés 24 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 27 avril 2010 - 28 mars 2005 à 19:04
Pinky84 Messages postés 24 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 27 avril 2010 - 29 mars 2005 à 14:50
J'ai un header qui defini quelque prototype. Lorsque je l'include dans
plusieur cpp, ca genere une erreur lorsqu'il link. Comment faire pour
avoir un header avec des prototype inclu dans plusieur fichier?



Merci d'avance



Pinky84

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
29 mars 2005 à 10:51
Ne déclare JAMAIS des variables dans une entêtes, au pire met les extern sans init. Mais les déclararions et init dans un .c ou .cpp. Fait déjà cela, si ca se trouve ça suffira.

Le _ devant le nom des fonctions est-il bien également dans les noms de fonctions du .c ou .cpp ?
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
28 mars 2005 à 19:37
Au début de ton header



#ifndef FICHIER_H

#define FICHIER_H



// tes déclarations



#endif



Comme ca tu es sur que ton fichier n'est inclus qu'une fois
0
Pinky84 Messages postés 24 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 27 avril 2010
28 mars 2005 à 20:28
J'avais deja fait ca... je comprend pas trop le probleme.. il n'y a pas
que des prototype de function dans mon h, il y a quelque typedef, des
declaration de variable.. etc. mais quand il link il dit 'Already
defined' juste pour les function.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
28 mars 2005 à 20:38
C'est normal qu'il y ai de mutiples définitions si du défini des
fonctions non template et non inline dans un header, elles doivent etre
définient dans un .cpp.



La règle (pour les variables comme pour les fonctions) c'est de
multiples déclarations (jusqu'à une par unité de compilation)
mais une seule définition.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pinky84 Messages postés 24 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 27 avril 2010
28 mars 2005 à 21:05
c'est pourtant ce que j'ai fais (je crois).. enfin.. si vous voulez bien jeter un coup d'oeil:



#ifndef UXTHEME_H

#define UXTHEME_H



#ifndef _WIN32_WINNT

#define _WIN32_WINNT 0x0501

#endif



#include <windows.h>

#include <commctrl.h>

#include

#include <tmschema.h>



typedef HRESULT (WINAPI *LPCLOSETHEMEDATA)(HTHEME);

typedef HRESULT (WINAPI *LPDRAWTHEMEBACKGROUND) (HTHEME, HDC, int, int, const RECT *, const RECT *);

typedef HRESULT (WINAPI *LPDRAWTHEMEPARENTBACKGROUND) (HWND, HDC, RECT *);

typedef HRESULT (WINAPI *LPGETBACKGROUNDCONTENTRECT) (HTHEME, HDC, int, int, const RECT *, RECT *);

typedef BOOL (WINAPI *LPISTHEMEBACKGROUNDPARTIALLYTRANSPARENT) (HTHEME, int, int);

typedef HTHEME (WINAPI *LPOPENTHEMEDATA) (HWND, LPCWSTR);



HMODULE g_hUxTheme = NULL;



LPCLOSETHEMEDATA gp_CloseThemeData = NULL;

LPDRAWTHEMEBACKGROUND gp_DrawThemeBackground = NULL;

LPDRAWTHEMEPARENTBACKGROUND gp_DrawThemeParentBackground = NULL;

LPGETBACKGROUNDCONTENTRECT gp_GetBackgroundContentRect = NULL;

LPISTHEMEBACKGROUNDPARTIALLYTRANSPARENT gp_IsThemeBackgroundPartiallyTransparent = NULL;

LPOPENTHEMEDATA gp_OpenThemeData = NULL;



extern HRESULT _CloseThemeData(HTHEME hTheme);

extern HRESULT _DrawThemeBackground(HTHEME hTheme, HDC hDc, int
iPartId, int iState, const RECT *p_rcRect, const RECT *p_rcClip);

extern HRESULT _DrawThemeParentBackground(HWND hWndControl, HDC hDcControl, RECT *p_rcRect);

extern HRESULT _GetBackgroundContentRect(HTHEME hTheme, HDC hDc, int
iPartId, int iState, const RECT *p_rcBound, RECT *p_rcContent);

extern BOOL _IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iState);

extern HTHEME _OpenThemeData(HWND hWndControl, LPCWSTR pszClassList);



#endif
0
Pinky84 Messages postés 24 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 27 avril 2010
29 mars 2005 à 14:50
Oui il y a le _ devant les nom de unction dans le cpp. Et oui ca a suffi. Ca compile maintenant



Merci
0