Commande unifdef
Objectif
Supprime des lignes ifdef d'un fichier.
Syntaxe
unifdef [ -t ] [ -l ] [ -c ] [ -DSymbole ] [ -USymbol ] [ -idSymbole ] [ -iuSymbole ] [ Fichier ]
Descriptif
La commande unifdef est utile pour supprimer des lignes ifdef d'un fichier tout en laissant le fichier seul. La commande unifdef reconnaît les ifdefs imbriqués, les commentaires et les guillemets simples et doubles de la syntaxe C afin de fonctionner correctement, mais elle n'inclut pas les fichiers ni les macros d'interprétation. La commande unifdef reconnaît mais ne supprime pas les commentaires.
La commande unifdef extrait son entrée de l'entrée standard si aucun fichier n'est spécifié et copie sa sortie dans la sortie standard.
Une fois qu'un symbole est spécifié, les lignes de ces ifdefs sont copiées dans la sortie ou supprimées, selon le cas. Les lignes ifdef, ifndef, else, elif et endif associées au symbole sont également supprimées. Les ifdefs qui impliquent des symboles non spécifiés sont intacts et copiés avec leurs lignes ifdef, else, elif et endif associées. Si le même symbole apparaît dans plusieurs arguments, seule la première occurrence est significative. Par exemple, si un ifdefXse produit imbriqué dans un autre ifdefX, l'ifdef interne est considéré comme un symbole non reconnu.
Lors de l'utilisation d'ifdefs pour délimiter des lignes non C telles que des commentaires ou du code inachevé, il est nécessaire de spécifier les symboles à utiliser à cette fin. Sinon, la commande unifdef tente d'analyser les guillemets et les commentaires dans ces lignes ifdef.
La commande unifdef ne peut pas traiter les constructions cpp telles que:
#if defined(X) || defined(Y)OR
#elif XOR
#elif defined(X) || defined(Y)Des mots clés
Les mots clés suivants sont reconnus par la commande unifdef :
- ifdef
- ifndef
- autre
- endif
- elif
Indicateurs
| Article | Descriptif |
|---|---|
| -c | Complète l'opération de la commande unifdef . C'est-à-dire que les lignes qui auraient été supprimées sont conservées et vice versa. |
| -D Symbole | Indique le symbole à définir. |
| Fichier | Indique la source d'entrée. |
| -id Symbole | La commande unifdef ne tente pas de reconnaître les commentaires, les apostrophes ou les guillemets à l'intérieur des ifdefsspécifiés, mais ces lignes sont copiées. |
| -iu Symbole | La commande unifdef ne tente pas de reconnaître les commentaires, les apostrophes ou les guillemets dans les ifdefsspécifiés. Ces lignes ne seront pas copiées. |
| -l | Permet de remplacer les lignes supprimées par des lignes vides au lieu de les supprimer. |
| -t | Permet d'utiliser la commande unifdef pour le texte en clair (à la place du code C): la commande unifdef ne tente pas de reconnaître les commentaires, les apostrophes et les guillemets. |
| -U Symbole | Indique le symbole à ne pas définir. |
Statut de sortie
Cette commande renvoie les valeurs de sortie suivantes :
| Article | Descriptif |
|---|---|
| 0 % | La sortie est une copie exacte de l'entrée. |
| 1 seul | La sortie n'est pas une copie exacte de l'entrée. |
| 2 | La commande a échoué en raison d'une fin de fichier prématurée ou d'une erreur else, elifou endifinappropriée. |
Exemples
- Exemple:
provoque la lecture du fichier par la commande unifdeforiginal.cet supprimez les lignes #ifdef A. Il supprime ensuite tout ce qui suit un #elif/#else associé au #ifdef A, jusqu'au #endif. La sortie est placée dans lemodified.c.xlsx.unifdef -DA original.c > modified.c - Exemple:
provoque la lecture du fichier par la commande unifdeforiginal.cet supprimez le #ifdef A jusqu'à son #elif//#elseassocié ou son #endifassocié. Dans le cas du #elif, #elif est remplacé par #if. Dans le cas de #else, #else est supprimé avec son #endifassocié. La sortie est placée dans lemodified.c.xlsx.unifdef -UA original.c > modified.c
Fichiers
| Article | Descriptif |
|---|---|
| /usr/bin/unifdef | Contient la commande unifdef . |