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 X

OR

#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

  1. Exemple:
    unifdef -DA original.c > modified.c
    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.
  2. Exemple:
    unifdef -UA original.c > modified.c
    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.

Fichiers

Article Descriptif
/usr/bin/unifdef Contient la commande unifdef .