Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Maîtriser les directives de préprocesseur C# : Guide pratique

Maîtriser les directives de préprocesseur C#

Découvrez comment les directives de préprocesseur C# influencent la compilation, contrôlent le flux et gèrent les erreurs. Ce guide couvre chaque directive, sa syntaxe, des exemples réels et les bonnes pratiques.

Les directives de préprocesseur sont des commandes que le compilateur évalue avant le début de la compilation réelle. Elles dictent quelles sections de code sont incluses, comment les avertissements et erreurs sont gérés, et peuvent même modifier la vision du compilateur sur les numéros de ligne et noms de fichiers.

En C#, une directive commence par un symbole # et s'étend sur une seule ligne, terminée par un saut de ligne plutôt que par un point-virgule.

Directives de préprocesseur en C#
DirectiveDescriptionSyntaxe
#ifÉvalue une expression de préprocesseur et inclut le code seulement si vrai.
#if expression code #endif
#elifUtilisé après #if pour tester des expressions additionnelles.
#if expr1 code1 #elif expr2 code2 #endif
#elseS'exécute quand aucune des conditions #if ou #elif précédentes n'est vraie.
#if expr1 code1 #else code2 #endif
#endifMarque la fin d'un bloc conditionnel.
#if expr code #endif
#defineDéfinit un nouveau symbole.
#define SYMBOLE
#undefSupprime un symbole précédemment défini.
#undef SYMBOLE
#warningGénère un avertissement de niveau 1 du compilateur.
#warning Votre message d'avertissement
#errorProvoque une erreur à la compilation.
#error Votre message d'erreur
#lineRemplace le numéro de ligne et le nom de fichier du compilateur pour les diagnostics.
#line 50 "FakeProgram.cs" #endif
#regionCrée une région pliable dans les éditeurs comme Visual Studio.
#region Description code #endregion
#pragmaPasse des instructions spéciales au compilateur (ex. activer/désactiver avertissements).
#pragma warning disable #endif

Définition et suppression de symboles

Exemple : Définition d'un symbole

#define TESTS

Exemple : Suppression d'un symbole

#undef TESTS

Compilation conditionnelle avec #if, #elif, #else et #endif

Exemple pratique

#define CSHARP
#undef PYTHON
using System;
namespace Directive {
    class DirectiveConditionnelle {
        static void Main(string[] args) {
            #if (CSHARP && PYTHON)
                Console.WriteLine("CSHARP et PYTHON sont définis");
            #elif (CSHARP && !PYTHON)
                Console.WriteLine("CSHARP est défini, PYTHON est indéfini");
            #elif (!CSHARP && PYTHON)
                Console.WriteLine("PYTHON est défini, CSHARP est indéfini");
            #else
                Console.WriteLine("CSHARP et PYTHON sont indéfinis");
            #endif
        }
    }
}

Sortie : CSHARP est défini, PYTHON est indéfini


Génération d'avertissements et d'erreurs

Exemple d'avertissement

using System;
namespace Directives {
    class DirectiveAvertissement {
        public static void Main(string[] args) {
            #if (!CSHARP)
                #warning CSHARP est indéfini
            #endif
            Console.WriteLine("Exemple de directive #warning");
        }
    }
}

La sortie inclut une ligne d'avertissement mais le texte de la console s'affiche.

Exemple d'erreur

using System;
namespace Directive {
    class Erreur {
        public static void Main(string[] args) {
            #if (!CSHARP)
                #error CSHARP est indéfini
            #endif
            Console.WriteLine("Exemple de directive #error");
        }
    }
}

Sortie : la compilation échoue avec une erreur à la compilation ; la dernière ligne de console n'est jamais exécutée.


Personnalisation des emplacements de diagnostic avec #line

Exemple

using System;
namespace Directive {
    class DemoLigne {
        public static void Main(string[] args) {
            #line 200 "AutreProgramme.cs"
            #warning Avertissement réel généré par Program.cs à la ligne 10
        }
    }
}

Résultat : L'avertissement apparaît comme AutreProgramme.cs(200,22): warning CS1030: ...


Organisation du code avec #region et #endregion

Exemple

using System;
namespace Directive {
    class DemoRegion {
        public static void Main(string[] args) {
            #region Bonjour
                Console.WriteLine("Bonjour");
                Console.WriteLine("Bonjour");
                Console.WriteLine("Bonjour");
                Console.WriteLine("Bonjour");
                Console.WriteLine("Bonjour");
            #endregion
        }
    }
}

Sortie : cinq lignes de "Bonjour".


Instructions avancées au compilateur avec #pragma

Exemple

using System;
namespace Directive {
    class DemoPragma {
        public static void Main(string[] args) {
            #pragma warning disable
            #warning Ceci est un avertissement 1
            #pragma warning restore
            #warning Ceci est un avertissement 2
        }
    }
}

Seul le second avertissement est affiché.

Pour plus de détails, consultez la référence officielle #pragma (référence C#).


Langue C

  1. Comprendre les mots-clés et identificateurs C# : règles, listes et bonnes pratiques
  2. Maîtriser les variables, littéraux et constantes en C++ : Guide complet
  3. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  4. Mots-clés et identificateurs en C : Guide pratique
  5. Types de données en C expliqués : int, float, char et plus — Guide complet
  6. Mots-clés et identifiants Python : Maîtriser les mots réservés et les conventions de nommage
  7. Expressions régulières Python (module re) — Guide pratique
  8. Maîtriser le module time de Python : Fonctions, structures et exemples pratiques
  9. Impression 3D vs Usinage CNC : Choisir le bon outil pour votre projet