Este es el comando unifdef que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
unifdef, caída unif - eliminar condicionales del preprocesador del código
SINOPSIS
unifdef [-bBcdehKkmnsStV] [-Icamino] [-[identificaciónsym[=val]] [- [i] Usym] ... [-f desfile de moda] [-x {012}]
[-M atrásext] [-o archivar] [en archivo ...]
caída unif [-Icamino] ... presentar
DESCRIPCIÓN
El unifdef utilidad procesa selectivamente condicional cpp(1) directivas. Quita de un
archivar tanto las directivas como cualquier texto adicional que especifiquen debe eliminarse, mientras que
de lo contrario, dejar el archivo solo.
El unifdef la utilidad actúa sobre #Si, #ifdef, #siempre, #elif, #elsey #terminara si líneas, usando
macros especificadas en -D y -U opciones de línea de comando o en -f archivos de definiciones. Una directiva
se procesa si las especificaciones macro son suficientes para proporcionar un valor definido para su
expresión de control. Si el resultado es falso, la directiva y las siguientes líneas bajo su
se eliminan el control. Si el resultado es verdadero, solo se elimina la directiva. Un #ifdef or
#siempre La directiva se pasa sin cambios si no se especifica su macro de control.
Cualquiera #Si or #elif expresión de control que tiene un valor desconocido o que unifdef no puedo analizar
pasa sin cambios. Por defecto, unifdef ignora #Si y #elif líneas con constante
expresiones; se le puede decir que los procese especificando el -k bandera en la línea de comando.
Entiende un subconjunto de uso común de la sintaxis de expresión para #Si y #elif líneas:
constantes enteras, valores enteros de macros definidos en la línea de comando, la se define()
operador, los operadores !, <, >, <=, >=, ==, !=, &&, ||y expresiones entre paréntesis. A
tipo de evaluación de "cortocircuito" se utiliza para el && operador: si alguno de los operandos es
definitivamente falso, entonces el resultado es falso, incluso si el valor del otro operando es
desconocido. Del mismo modo, si cualquiera de los operandos de || es definitivamente cierto, entonces el resultado es cierto.
Al evaluar una expresión, unifdef no expande macros primero. El valor de una macro
debe ser un número simple, no una expresión. Se permite una forma limitada de indirección, donde
el valor de una macro es el nombre de otra.
En la mayoría de los casos, unifdef no distingue entre macros similares a objetos (sin argumentos)
y macros similares a funciones (con argumentos). Una invocación de macro similar a una función puede aparecer en
#Si y #elif expresiones de control. Si la macro no está definida explícitamente o está definida
con el -D bandera en la línea de comandos, o con #definir en un parche de -f archivo de definiciones, su
los argumentos se ignoran. Si una macro está explícitamente indefinida en la línea de comando con la -U
bandera, o con #undef en un parche de -f archivo de definiciones, puede que no tenga argumentos ya que este
conduce a un error de sintaxis.
El unifdef La utilidad entiende lo suficiente sobre C para saber cuándo una de las directivas es
inactivo porque está dentro de un comentario o afectado por una línea de barra invertida continua. Eso
detecta directivas de preprocesador con formato inusual y sabe cuándo el diseño es demasiado extraño para
que manejar.
Un guión llamado caída unif se puede utilizar para eliminar todos los condicionales cpp(1) directivas de un
expediente. Usa unifdef -s y cpp -dM para obtener listas de todas las macros de control y sus
definiciones (o falta de ellas), luego invoca unifdef con argumentos apropiados para procesar
el archivo.
OPCIONES
-Dsym=val
Especifique que una macro se define con un valor determinado.
-Dsym Especifique que una macro se define con el valor 1.
-Usym Especifique que una macro no está definida.
Si la misma macro aparece en más de un argumento, domina la última aparición.
-identificaciónsym[=val]
-iUsym Las cadenas de C, los comentarios y las continuaciones de línea se ignoran en #ifdef y #siempre
bloques controlados por macros especificadas con estas opciones.
-f desfile de moda
El archivo desfile de moda contiene #definir y #undef directivas de preprocesador, que tienen la
mismo efecto que el correspondiente -D y -U argumentos de la línea de comandos. Tu puedes tener
una variedad -f argumentos y mezclarlos con -D y -U argumentos; las opciones posteriores anulan
los anteriores.
Cada directiva debe estar en una sola línea. Definiciones de macros similares a objetos (sin
argumentos) se establecen en el valor dado. Definiciones de macros similares a funciones (con
argumentos) se tratan como si estuvieran establecidos en 1.
-b Reemplace las líneas eliminadas con líneas en blanco en lugar de eliminarlas. Mutuamente excluyentes
con el -B .
-B Comprima líneas en blanco alrededor de una sección eliminada. Mutuamente excluyente con el -b
.
-c El complemento, es decir, las líneas que se habrían eliminado o borrado se retienen y
viceversa.
-d Active la impresión de mensajes de depuración.
-e De forma predeterminada, unifdef informará un error si necesita eliminar un preprocesador
directiva que abarca más de una línea, por ejemplo, si tiene un comentario de varias líneas
colgando de su extremo derecho. los -e flag hace que ignore la línea en su lugar.
-h Ayuda de impresión.
-Icamino Especifica a caída unif un lugar adicional para buscar #incluir archivos. Esta opción
es ignorado por unifdef por compatibilidad con cpp(1) y para simplificar la
aplicación de caída unif.
-K Trate siempre el resultado de && y || operadores como desconocidos si alguno de los operandos es
desconocido, en lugar de cortocircuitar cuando los operandos desconocidos no pueden afectar el resultado.
Esta opción es para compatibilidad con versiones anteriores de unifdef.
-k Proceso #Si y #elif líneas con expresiones constantes. De forma predeterminada, las secciones
controladas por tales líneas se pasan sin cambios porque normalmente comienzan
“#If 0” y se utilizan como una especie de comentario para esbozar el desarrollo pasado o futuro.
Sería de mala educación eliminarlos, tal como sería para los comentarios normales.
-m Modifique uno o más archivos de entrada en su lugar.
-M atrásext
Modifique los archivos de entrada en su lugar y mantenga copias de seguridad de los archivos originales agregando el
atrásext a los nombres de archivo de entrada.
-n Agregue directivas #line a la salida después de las líneas eliminadas, para que los errores
producido al compilar el archivo de salida corresponden a los números de línea en la entrada
archivo.
-o archivar
Escribe la salida en el archivo archivar en lugar de la salida estándar al procesar un
fila india.
-s En lugar de procesar un archivo de entrada como de costumbre, esta opción provoca unifdef para producir
una lista de macros que se utilizan en expresiones de control de directivas de preprocesador.
-S Como en el -s opción, pero también se imprime la profundidad de anidamiento de cada macro. Este es
útil para calcular el número de posibles combinaciones de interdependientes
macros definidas / indefinidas.
-t Deshabilita el análisis de cadenas C, comentarios y continuaciones de línea, lo cual es útil
para texto sin formato. Esta es una versión general del -identificación y -iU banderas.
-V Imprimir detalles de la versión.
-x {012}
Establezca el modo de estado de salida en cero, uno o dos. Ver el SALIR ESTADO sección a continuación para
Detalles.
El unifdef la utilidad toma su entrada de stdin si no hay presentar argumentos. Debes usar
los -m or -M opciones si hay varios archivos de entrada. Puede especificar inut desde stdin o
salida a stdout con '-'.
El unifdef La utilidad funciona muy bien con -Dsym opción de diff(1).
SALIR ESTADO
En uso normal, el unifdef El estado de salida de la utilidad depende del modo establecido mediante el -x
.
Si el modo de salida es cero (el predeterminado), entonces unifdef sale con estado 0 si la salida es una
copia exacta de la entrada, o con estado 1 si la salida es diferente.
Si el modo de salida es uno, unifdef sale con el estado 1 si la salida no está modificada o 0 si
difiere
Si el modo de salida es dos, unifdef salidas con estado cero en ambos casos.
En todos los modos de salida, unifdef sale con el estado 2 si hay un error.
El estado de salida es 0 si el -h or -V se dan las opciones de la línea de comandos.
La diagnostica
Demasiados niveles de anidación.
Inapropiado #elif, #else or #terminara si.
Línea de control de preprocesador ofuscada.
EOF prematuro (con el número de línea del más reciente sin terminar #Si).
EOF en comentario.
Utilice unifdef en línea mediante los servicios de onworks.net