42 votes

différence entre "ifndef" et "if! defined" en C?

J'ai vu #ifndef ABC et #if !defined (ABC) dans le même fichier source C.

Y a-t-il une différence subtile entre eux? (Si c'est une question de style, pourquoi quelqu'un les utiliserait-il dans le même fichier)

39voto

Dan Fego Points 6658

Non, il n'y a pas de différence entre les deux alors utilisé de cette façon. La dernière forme (à l'aide d' defined()) est utile lors de la première #if ou l'une de l' #elif conditions a besoin d'un test plus complexes. #ifdef fonctionnera encore, mais il pourrait être plus clair à l'aide de #if defined() dans ce cas. Par exemple, si elle a besoin de tester si plus d'une macro est définie, ou si elle est égale à une valeur spécifique.

La variance (en utilisant à la fois dans un fichier) pourrait dépendre sur des subtilités de l'utilisation, comme mentionné ci-dessus, ou tout simplement une mauvaise pratique par incohérent.

6voto

Jerry Penner Points 583

Dans le contexte que vous avez donné, ce sont les mêmes: vous ne faites que vérifier l'existence d'un identifiant de macro.

Cependant, le formulaire #if vous permet d'évaluer des expressions, ce qui peut être utile.

1voto

Brad Christie Points 58505

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