k1koo
Messages postés7Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention26 mai 2008
-
1 avril 2008 à 17:04
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
3 avril 2008 à 10:47
bonjour j'ai un problème dès que je compile mon programme il me répond que je redéfinie mes classes :
CComSerie.h:45: erreur: redefinition of ‘class CComSerie’
CComSerie.h:46: erreur: previous definition of ‘class CComSerie’
sous visual je sais que c'est la fonction #pragma once mais sous linux ?
MERCI D'AVANCE
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 1 avril 2008 à 17:25
Bonjour,
Pour éviter les inclusions multiples sans utiliser le #pragma once :
#ifndef __FICHIER_HPP
#define __FICHIER_HPP
... tout le fichier d'entête ici ...
#endif // __FICHIER_HPP
C'est à dire que si la constante __FICHIER_HPP n'est pas définie, on la définit. Cela empêchera les inclusions suivantes puisque cette constante existera ! Comme nom de constante il faut utiliser un nom qui ne risque pas d'exister déjà, le construire à partir du nom du fichier est simple et plus sûr.
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 1 avril 2008 à 17:50
Ce qui donne :
Voilà les fichiers d'entête de mon main :
#ifndef Watt
#define Watt
#include "Tension.h"
#include "Intensite.h"
#include "Puissance.h"
#include "Wattmetre.h"
#include "Envoi_Mail.h"
#include "Save_PUI.h"
#endif // Watt
Alors non ! Ce genre de fonctionnalité ne se place pas du tout dans les fichiers C/C++ (.c/.cpp) mais dans les fichiers d'entête (.h/.hpp). Dans le fichier main :
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 3 avril 2008 à 10:47
OK ! L'ensemble ifndef/define/endif doit encadré le contenu des fichiers qui risquent d'être inclus plusieurs fois, c'est à dire les fichiers d'entête .h/.hpp. Les fichiers source .c/.cpp n'ont aucune raison d'être inclus plusieurs fois.