93 votes

Pourquoi seulement définir une macro si il ' s pas déjà défini ?

Partout dans notre base de code C, je vois que chaque macro définie de la manière suivante :

Quelle est la justification de ce faire définir les contrôles au lieu de simplement définir les macros ?

Je ne peux pas trouver cette pratique expliquée n’importe où sur le web.

138voto

Barmar Points 135986

Cela vous permet de substituer les macros lorsque vous êtes la compilation :

Les définitions dans le fichier d’en-tête sont utilisées comme valeurs par défaut.

51voto

Enzo Ferber Points 394

Comme je l’ai dit dans le commentaire, Imaginez cette situation :

toto.h

defs.h

bar.c

Imprimera `` .

Toutefois, si le conditionnel n’était pas là, le résultat serait des avertissements de compilation de redéfinition de la MACRO et il imprime .

17voto

Ivaylo Strandjev Points 38924

Je ne sais pas le contexte, mais cela peut être utilisé pour donner à l’utilisateur la disponibilité pour substituer les valeurs définies par les définitions de macros. Si l’utilisateur définit explicitement une valeur différente pour l’une de ces macros, qu'ils seront utilisés au lieu des valeurs utilisées ici.

Par exemple dans g ++, vous pouvez utiliser le `` drapeau pendant la compilation pour passer une valeur à une macro.

14voto

Arkadiy Points 10567

Ceci est fait afin que l’utilisateur du fichier d’en-tête peut remplacer les définitions à partir de son code ou de drapeau -D du compilateur.

7voto

George Points 179

Tout projet réside sur plusieurs fichiers source. Lorsque vous travaillez sur un seul fichier source, les contrôles semblent (et réellement) n'ont aucun point, mais quand on travaille sur un grand projet C, c'est une bonne pratique, afin de vérifier s'il existe définit avant de définir une constante. L'idée est simple: vous avez besoin de la constante dans ce fichier source, mais il peut avoir déjà été défini dans un autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X