C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[debutant] - directive de compilation

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
stat
Guest





PostPosted: Wed Jun 01, 2005 8:16 am    Post subject: [debutant] - directive de compilation Reply with quote



Bonjour,

Je suis en train de lire une classe et je ne comprends pas pourquoi il
y a ecrit cela :

Ligne 1 #ifdef _DEBUG
Ligne 2 #undef THIS_FILE
Ligne 3 static char THIS_FILE[]=__FILE__;
Ligne 4 #define new DEBUG_NEW
Ligne 5 #endif

Je comprends individuellement les lignes 1, 2 ,4 et 5. Je ne comprends
pas la ligne 3. Pourquoi n'ecrit-on pas "__FILE__" au lieu de __FILE__
sans les guillemets ?

Pourriez-vous aussi avoir l'amabilite de me dire a quoi ca sert ce
genre de code svp (Ligne 2 et 3) ?

Merci bien.

--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net

Back to top
Marc Boyer
Guest





PostPosted: Wed Jun 01, 2005 8:56 am    Post subject: Re: [debutant] - directive de compilation Reply with quote



In article <mn.0a2c7d56dfcb5dca.21643 (AT) stat (DOT) stat>, stat wrote:
Quote:
Bonjour,

Je suis en train de lire une classe et je ne comprends pas pourquoi il
y a ecrit cela :

Ligne 1 #ifdef _DEBUG
Ligne 2 #undef THIS_FILE
Ligne 3 static char THIS_FILE[]=__FILE__;
Ligne 4 #define new DEBUG_NEW
Ligne 5 #endif

Je comprends individuellement les lignes 1, 2 ,4 et 5. Je ne comprends
pas la ligne 3. Pourquoi n'ecrit-on pas "__FILE__" au lieu de __FILE__
sans les guillemets ?

Parce qu'ils sont déjà dans __FILE__ ?

Quote:
Pourriez-vous aussi avoir l'amabilite de me dire a quoi ca sert ce
genre de code svp (Ligne 2 et 3) ?

La ligne 2 détruit la macro THIS_FILE. Difficile d'en dire plus sans le
contexte, mais on peut imaginer:
1) qu'il existe "avant" une définition de THIS_FILE et qu'elle
ne convient pas
2) que le programmeur ne sait pas trop s'il existe une définition
de THIS_FILE avant, mais qu'il avait la flemme d'écrire
#ifdef THIS_FILE
#error "Macro name collision: THIS_FILE already defined"
#endif
en se reportant sur le fait que si THIS_FILE est déjà définit,
le préprocesseur émet généralement un message d'avertissement.

La ligne 3 définit une chaine de caractère statique non constante
de même contenu initial que __FILE__. Je ne vois pas bien
l'intérêt de ne pas utiliser __FILE__ directement. Un
grep THIS_FILE
permettrait peut-etre de comprendre l'usage qui en est fait.

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.

Back to top
stat
Guest





PostPosted: Wed Jun 01, 2005 9:12 am    Post subject: Re: [debutant] - directive de compilation Reply with quote



Merci beaucoup.

--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net

Back to top
Loïc Joly
Guest





PostPosted: Wed Jun 01, 2005 6:54 pm    Post subject: Re: [debutant] - directive de compilation Reply with quote

Marc Boyer a écrit :
Quote:
In article <mn.0a2c7d56dfcb5dca.21643 (AT) stat (DOT) stat>, stat wrote:

Ligne 1 #ifdef _DEBUG
Ligne 2 #undef THIS_FILE
Ligne 3 static char THIS_FILE[]=__FILE__;
Ligne 4 #define new DEBUG_NEW
Ligne 5 #endif
[...]
La ligne 3 définit une chaine de caractère statique non constante
de même contenu initial que __FILE__. Je ne vois pas bien
l'intérêt de ne pas utiliser __FILE__ directement.

Peut être que l'utilisateur souhaite utiliser le nom du .h dans la suite
du code, même si cette suite n'est pas dans le même fichier.

// A.h

static char THIS_FILE[] = __FILE__;

// B.h
#include "A.h"
static char FILE1[] = __FILE__; // vaut "B.h"
static char FILE2[] = THIS_FILE; // vaut "A.h"

--
Loïc

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jun 01, 2005 6:57 pm    Post subject: Re: [debutant] - directive de compilation Reply with quote

On Wed, 01 Jun 2005 20:54:35 +0200, Loïc Joly
<loic.actarus.joly (AT) wanadoo (DOT) fr>:

Quote:
Peut être que l'utilisateur souhaite utiliser le nom du .h dans la suite
du code, même si cette suite n'est pas dans le même fichier.

Dans ce cas, le nom THIS_FILE n'est guère heureux...


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.