Il s'agit de la commande unifdefall qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
unifdef, unifdefall — supprimer les conditions du préprocesseur du code
SYNOPSIS
unifdef [-bBcdehKkmnsStV] [-Ichemin] [-[identifiantsym[=vague]] [-[je]Usym] [-f défilé de mode] [-x {012}]
[-M retour arrière] [-o fichier de sortie] [dans le fichier ]
unifdefall [-Ichemin] filet
DESCRIPTION
Notre unifdef utilitaire traite sélectivement les conditions cpp(1) directives. Il supprime d'un
fichier à la fois les directives et tout texte supplémentaire qu'ils spécifient doivent être supprimés, tandis que
sinon laisser le fichier seul.
Notre unifdef l'utilitaire agit sur #si, #ifdef, #ifndef, #elif, #else et #endif lignes, en utilisant
macros spécifiées dans -D et votre -U options de ligne de commande ou dans -f fichiers de définitions. Une directive
est traité si les spécifications de la macro sont suffisantes pour fournir une valeur définie pour son
expression de contrôle. Si le résultat est faux, la directive et les lignes suivantes sous son
contrôle sont supprimés. Si le résultat est vrai, seule la directive est supprimée. Un #ifdef or
#ifndef La directive est transmise sans modification si sa macro de contrôle n'est pas spécifiée.
Toutes #si or #elif expression de contrôle qui a une valeur inconnue ou qui unifdef ne peut pas analyser
est passé sans changement. Par défaut, unifdef ne tient pas compte #si et votre #elif lignes avec constante
expressions; on peut lui dire de les traiter en spécifiant le -k drapeau sur la ligne de commande.
Il comprend un sous-ensemble couramment utilisé de la syntaxe d'expression pour #si et votre #elif lignes:
constantes entières, valeurs entières des macros définies sur la ligne de commande, les défini()
opérateur, les opérateurs !, <, >, <=, >=, ==, !=, &&, ||, et les expressions entre parenthèses. UNE
type d'évaluation de "court-circuit" est utilisé pour le && opérateur : si l'un des opérandes est
définitivement faux alors le résultat est faux, même si la valeur de l'autre opérande est
inconnu. De même, si l'un des opérandes de || est certainement vrai alors le résultat est vrai.
Lors de l'évaluation d'une expression, unifdef ne développe pas les macros en premier. La valeur d'une macro
doit être un nombre simple, pas une expression. Une forme limitée d'indirection est autorisée, où
la valeur d'une macro est le nom d'une autre.
Dans la plupart des cas, unifdef ne fait pas la distinction entre les macros de type objet (sans arguments)
et des macros de type fonction (avec arguments). Une invocation de macro de type fonction peut apparaître dans
#si et votre #elif expressions de contrôle. Si la macro n'est pas explicitement définie, ou est définie
couplé à -D flag sur la ligne de commande, ou avec #define dans un -f fichier de définitions, son
les arguments sont ignorés. Si une macro est explicitement indéfinie sur la ligne de commande avec le -U
drapeau, ou avec #undef dans un -f fichier de définitions, il peut ne pas avoir d'arguments car ce
conduit à une erreur de syntaxe.
Notre unifdef l'utilitaire comprend juste assez le C pour savoir quand l'une des directives est
inactif car il est à l'intérieur d'un commentaire ou affecté par une ligne continue avec une barre oblique inverse. Ce
repère les directives de préprocesseur au format inhabituel et sait quand la mise en page est trop étrange pour
il à gérer.
Un script appelé unifdefall peut être utilisé pour supprimer toutes les conditions cpp(1) les directives d'un
déposer. Il utilise unifdef -s et votre cpp -dM pour obtenir des listes de toutes les macros de contrôle et de leurs
définitions (ou leur absence), invoque alors unifdef avec des arguments appropriés pour traiter
le fichier.
OPTIONS
-Dsym=vague
Spécifiez qu'une macro est définie sur une valeur donnée.
-Dsym Spécifiez qu'une macro est définie à la valeur 1.
-Usym Spécifiez qu'une macro n'est pas définie.
Si la même macro apparaît dans plusieurs arguments, la dernière occurrence domine.
-identifiantsym[=vague]
-iUsym Les chaînes C, les commentaires et les continuations de ligne sont ignorés dans #ifdef et votre #ifndef
blocs contrôlés par des macros spécifiées avec ces options.
-f défilé de mode
Le fichier défilé de mode contient #define et votre #undef les directives du préprocesseur, qui ont le
même effet que le correspondant -D et votre -U arguments de ligne de commande. Vous pouvez avoir
plusieurs -f arguments et les mélanger avec -D et votre -U arguments; remplacement des options ultérieures
les plus anciens.
Chaque directive doit être sur une seule ligne. Définitions de macros de type objet (sans
arguments) sont définis sur la valeur donnée. Définitions de macros de type fonction (avec
arguments) sont traités comme s'ils étaient définis sur 1.
-b Remplacez les lignes supprimées par des lignes vides au lieu de les supprimer. En exclusivité mutuelle
couplé à -B option.
-B Compressez les lignes vides autour d'une section supprimée. En exclusivité mutuelle avec le -b
option.
-c Le complément, c'est-à-dire que les lignes qui auraient été supprimées ou masquées sont conservées et
vice versa.
-d Activez l'impression des messages de débogage.
-e Par défaut, unifdef signalera une erreur s'il doit supprimer un préprocesseur
directive qui s'étend sur plus d'une ligne, par exemple, si elle a un commentaire sur plusieurs lignes
suspendu à son extrémité droite. Les -e flag lui fait ignorer la ligne à la place.
-h Imprimer l'aide.
-Ichemin Spécifie de unifdefall un endroit supplémentaire à chercher #comprendre des dossiers. Cette option
est ignoré par unifdef pour la compatibilité avec cpp(1) et pour simplifier le
implémentation de unifdefall.
-K Traitez toujours le résultat de && et votre || opérateurs comme inconnus si l'un des opérandes est
inconnu, au lieu de court-circuiter lorsque des opérandes inconnus ne peuvent pas affecter le résultat.
Cette option est pour la compatibilité avec les anciennes versions de unifdef.
-k Processus #si et votre #elif lignes avec des expressions constantes. Par défaut, les rubriques
contrôlées par de telles lignes sont transmises sans changement car elles démarrent généralement
"#if 0" et sont utilisés comme une sorte de commentaire pour esquisser le développement futur ou passé.
Il serait impoli de les supprimer, comme ce serait le cas pour les commentaires normaux.
-m Modifier un ou plusieurs fichiers d'entrée en place.
-M retour arrière
Modifiez les fichiers d'entrée en place et conservez des sauvegardes des fichiers d'origine en ajoutant le
retour arrière aux noms de fichiers d'entrée.
-n Ajoutez des directives #line à la sortie après toutes les lignes supprimées, afin que les erreurs
produits lors de la compilation du fichier de sortie correspondent aux numéros de ligne dans l'entrée
fichier.
-o fichier de sortie
Écrire la sortie dans le fichier fichier de sortie au lieu de la sortie standard lors du traitement d'un
un seul fichier.
-s Au lieu de traiter un fichier d'entrée comme d'habitude, cette option provoque unifdef pour produire
une liste de macros qui sont utilisées dans les expressions de contrôle des directives de préprocesseur.
-S Comme le -s option, mais la profondeur d'imbrication de chaque macro est également imprimée. C'est
utile pour calculer le nombre de combinaisons possibles d'interdépendances
macros définies/non définies.
-t Désactive l'analyse des chaînes C, des commentaires et des continuations de ligne, ce qui est utile
pour le texte brut. Il s'agit d'une version générale du -identifiant et votre -iU drapeaux.
-V Imprimer les détails de la version.
-x {012}
Réglez le mode d'état de sortie sur zéro, un ou deux. Voir le EXIT STATUT section ci-dessous pour
détails.
Notre unifdef l'utilitaire prend sa contribution de Stdin s'il n'y a pas filet arguments. Tu dois utiliser
le -m or -M options s'il y a plusieurs fichiers d'entrée. Vous pouvez spécifier inut à partir de stdin ou
sortie vers stdout avec '-'.
Notre unifdef l'utilitaire fonctionne bien avec le -Dsym option de diff (1).
EXIT STATUT
En utilisation normale, le unifdef l'état de sortie de l'utilitaire dépend du mode défini à l'aide de la -x
option.
Si le mode de sortie est zéro (valeur par défaut) alors unifdef sort avec l'état 0 si la sortie est un
copie exacte de l'entrée, ou avec l'état 1 si la sortie diffère.
Si le mode de sortie est un, unifdef sort avec l'état 1 si la sortie n'est pas modifiée ou 0 si elle
diffère.
Si le mode de sortie est deux, unifdef sort avec le statut zéro dans les deux cas.
Dans tous les modes de sortie, unifdef sort avec l'état 2 s'il y a une erreur.
L'état de sortie est 0 si le -h or -V les options de ligne de commande sont données.
DIAGNOSTIC
Trop de niveaux d'imbrication.
Inapproprié #elif, #else or #endif.
Ligne de contrôle du préprocesseur obscurcie.
EOF prématuré (avec le numéro de ligne de la plus récente non terminée #si).
EOF en commentaire.
Utilisez unifdefall en ligne en utilisant les services onworks.net