[c++] ifdef/define

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!!!

2 réponses

  1. marvinrouge
     
    #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 ?
    0
    1. blof
       
      mais jsutement je veux connaitre la signification du X et du YYY que j'ai mentionné..
      merci en tous les cas..
      0
  2. pouet
     
    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 ;)
    0