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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Boyer
In article , stat wrote:
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__ ?
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.
In article <mn.0a2c7d56dfcb5dca.21643@stat.stat>, stat wrote:
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__ ?
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.
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__ ?
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.
stat
Merci beaucoup.
-- This is an automatic signature of MesNews. Site : http://www.mesnews.net
Merci beaucoup.
--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net
-- This is an automatic signature of MesNews. Site : http://www.mesnews.net
Loïc Joly
In article , 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.
In article <mn.0a2c7d56dfcb5dca.21643@stat.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.
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.