Comment utilisez-vous #define?
Je m'interroge sur les instances quand il fait envoyé à utiliser #define et #si consolidés. J'ai connu à ce sujet pendant un certain temps, mais jamais intégrée dans ma façon de coder. Exactement comment cela affecte la compilation?
Est #define la seule chose qui détermine si le code est inclus lors de la compilation? Si j'ai des #define DEBUGme comme un symbole personnalisé, la seule façon de les exclure de la compilation est de supprimer cette instruction #define?
source d'informationauteur MaseBase
Vous devez vous connecter pour publier un commentaire.
En C#
#define
macros, à l'instar de certains de Bernard exemples, ne sont pas autorisés. La seule utilisation commune de#define
/#if
s en C# est pour l'ajout d'option de débogage uniquement code. Par exemple:#define est utilisé pour définir des constantes de compilation que vous pouvez utiliser avec #si d'inclure ou d'exclure des morceaux de code.
Vous pouvez la destruction symboles ainsi
Bien, définit sont souvent utilisés pour compiler les constantes de temps et les macros. Cela peut rendre votre code un peu plus vite qu'il n'y a vraiment pas d'appels de fonction, les valeurs de sortie de l'macros sont déterminés au moment de la compilation. La #si sont très utiles. Le plus simple exemple que je peux penser à est de vérifier pour un debug pour ajouter un surplus d'exploitation forestière ou de la messagerie, peut-être même certaines fonctions de débogage. Vous pouvez également vérifier les différentes variables d'environnement de cette façon.
D'autres avec plus de C/C++ expérience pouvez ajouter plus j'en suis sûr.
Je me retrouve souvent à la définition de certaines choses que l'on fait de façon répétitive dans certaines fonctions. Qui rend le code beaucoup plus court et permet ainsi une meilleure vue d'ensemble.
Mais comme toujours, essayez de trouver une bonne mesure pour ne pas créer une nouvelle langue. Peut-être un peu dur à lire pour les occasionnelles de maintenance plus tard.
@Ed: Lors de l'utilisation de C++, il est rarement bénéficier de l'aide de #define plus de fonctions inline lors de la création de macros. L'idée de la "grande vitesse" est une idée fausse. Avec les fonctions inline, vous obtenez la même vitesse, mais vous obtenez également le type de sécurité, et pas d'effets secondaires de préprocesseur "coller" en raison du fait que les paramètres sont évalués avant l'appel de la fonction (pour un exemple, essayez d'écrire l'omniprésent MAX macro, et de l'appeler comme ceci: MAX(x++, y).. vous verrez de quoi je veux en venir).
Je n'ai jamais eu à utiliser #define dans mon C#, et j'ai très rarement l'utiliser pour autre chose que la plate-forme et le compilateur vérifie la version de compilation conditionnelle en C++.
Peut-être le plus commun usees de #define en C# est à différencier de debug/release et différentes plates-formes (par exemple Windows et X-Box 360 dans le XNA framework).
C'est pour la compilation conditionnelle, de sorte que vous pouvez inclure ou de supprimer des morceaux de code basé sur des attributs du projet qui ont tendance à être:
Ils peuvent également être utilisé pour désactiver les grandes parties d'un système rapidement,
par exemple, au cours du développement d'un jeu, je pourrais définir
puis les envelopper d'appel final de jouer un son dans:
Il est donc très facile pour moi d'allumer et d'éteindre le jeu de sons de construire. (Généralement, je ne joue pas les sons lors du débogage, car il est dans la manière de mes la musique 🙂 )
L'avantage est que vous n'êtes pas à l'introduction d'une branche par le biais de l'ajout d'une instruction if....