[c++] ifdef/define
blof
-
blof -
blof -
je n'arrive pas à comprendre ce morceau de code:
#if !defined(AFX_DATABASE_H__2BB557DC_8F32_475E_8A43_023FD2CF9680__INCLUDED_)
#define AFX_DATABASE_H__2BB557DC_8F32_475E_8A43_023FD2CF9680__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
del'aide!!!
#if !defined(AFX_DATABASE_H__2BB557DC_8F32_475E_8A43_023FD2CF9680__INCLUDED_)
#define AFX_DATABASE_H__2BB557DC_8F32_475E_8A43_023FD2CF9680__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
del'aide!!!
2 réponses
#if !defined X
#define X
YYY
#endif
ça veut dire
1) si X est pas défini
on définit X
le code YYY est compilé
2) si X existe déjà (par #define dans un autre fichier)
le code YYY n'est PAS compilé
est-clair ?
#define X
YYY
#endif
ça veut dire
1) si X est pas défini
on définit X
le code YYY est compilé
2) si X existe déjà (par #define dans un autre fichier)
le code YYY n'est PAS compilé
est-clair ?
pour etre plus precis, cela permet d eviter la redeclaration de fonctions.
si tu as deux fichier sources qui font un include du meme header, une fonction declaree dans ce header generera une erreur lors de l edition des liens.
cela peut aussi permettre de guarantir la portabilite du code dans des environnments bizarres, genre
#ifdef MSWIN32
std::cerr << "non posix environment"
<< std::endl;
#endif /* MSWIN32 */
si MSWIN32 n a pas ete definie (avec #define)
le code inclus ne sera pas traiter par le preprocesseur. (bref c est comme s il existait pas)
par contre defined() je ne suis pas sur que ce soit standart, faudrait verifier (sauf si quelqu un connait la norme ici ;)
si tu as deux fichier sources qui font un include du meme header, une fonction declaree dans ce header generera une erreur lors de l edition des liens.
cela peut aussi permettre de guarantir la portabilite du code dans des environnments bizarres, genre
#ifdef MSWIN32
std::cerr << "non posix environment"
<< std::endl;
#endif /* MSWIN32 */
si MSWIN32 n a pas ete definie (avec #define)
le code inclus ne sera pas traiter par le preprocesseur. (bref c est comme s il existait pas)
par contre defined() je ne suis pas sur que ce soit standart, faudrait verifier (sauf si quelqu un connait la norme ici ;)
merci en tous les cas..