une petite question : quel est le scope d'un #define? Est-il global, ou
uniquement celui des fichiers qui l'incluent? Autrement dit, puis-je
avoir 2 #define avec le même nom, et 2 valeurs différentes dans mon
code, à condition qu'ile en se "voient" pas?
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
Mickaël Wolff
Bonjour à tous,
Bonjour,
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du précompilateur.
Une variable ou une macro définies par un define, est valide dans le fichier dans lequel il est déclaré, et dans les fichiers qui incluent le fichier de déclaration.
toto.h #define TOTO_H
toto.c #ifdef TOTO_H
/* Code ignoré */ #endif
#include "toto.h"
#ifdef TOTO_H /* Code considéré */ #endif
Bien sûr tu peux déclarer TOTO_H dans d'autres fichiers d'en-tête, mais ça risque de devenir un beau bordel, car tu ne sauras plus quel sera le contenu réel de TOTO_H.
En espérant avoir été assez clair (ce que je doute, c'est plus facile avec un schéma à expliquer). -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
Bonjour à tous,
Bonjour,
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du
précompilateur.
Une variable ou une macro définies par un define, est valide dans le
fichier dans lequel il est déclaré, et dans les fichiers qui incluent le
fichier de déclaration.
toto.h
#define TOTO_H
toto.c
#ifdef TOTO_H
/* Code ignoré */
#endif
#include "toto.h"
#ifdef TOTO_H
/* Code considéré */
#endif
Bien sûr tu peux déclarer TOTO_H dans d'autres fichiers d'en-tête,
mais ça risque de devenir un beau bordel, car tu ne sauras plus quel
sera le contenu réel de TOTO_H.
En espérant avoir été assez clair (ce que je doute, c'est plus facile
avec un schéma à expliquer).
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du précompilateur.
Une variable ou une macro définies par un define, est valide dans le fichier dans lequel il est déclaré, et dans les fichiers qui incluent le fichier de déclaration.
toto.h #define TOTO_H
toto.c #ifdef TOTO_H
/* Code ignoré */ #endif
#include "toto.h"
#ifdef TOTO_H /* Code considéré */ #endif
Bien sûr tu peux déclarer TOTO_H dans d'autres fichiers d'en-tête, mais ça risque de devenir un beau bordel, car tu ne sauras plus quel sera le contenu réel de TOTO_H.
En espérant avoir été assez clair (ce que je doute, c'est plus facile avec un schéma à expliquer). -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
Michael DOUBEZ
Bonjour à tous,
Bonjour,
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du précompilateur.
Une variable ou une macro définies par un define, est valide dans le fichier dans lequel il est déclaré, et dans les fichiers qui incluent le fichier de déclaration.
Juste pour précision, il est possible de supprimer un #define par #undef.
#define FOO 1 #ifndef FOO #error "FOO should be defined #endif
#undef FOO #ifdef FOO #error "FOO should not be defined #endif
Michael
Bonjour à tous,
Bonjour,
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du
précompilateur.
Une variable ou une macro définies par un define, est valide dans le
fichier dans lequel il est déclaré, et dans les fichiers qui incluent le
fichier de déclaration.
Juste pour précision, il est possible de supprimer un #define par #undef.
#define FOO 1
#ifndef FOO
#error "FOO should be defined
#endif
#undef FOO
#ifdef FOO
#error "FOO should not be defined
#endif
une petite question : quel est le scope d'un #define?
Je ne crois pas qu'on puisse parler de porté pour une instruction du précompilateur.
Une variable ou une macro définies par un define, est valide dans le fichier dans lequel il est déclaré, et dans les fichiers qui incluent le fichier de déclaration.
Juste pour précision, il est possible de supprimer un #define par #undef.
#define FOO 1 #ifndef FOO #error "FOO should be defined #endif
#undef FOO #ifdef FOO #error "FOO should not be defined #endif