must - ifdef c++ para que sirve
Error: los nombres de las macros deben ser identificadores usando#ifdef 0 (6)
Tengo el código fuente de una aplicación escrita en C ++ y solo quiero comentar algo usando:
#ifdef 0
...
#endif
Y obtengo este error
error: los nombres de las macros deben ser identificadores
¿Por qué está pasando esto?
Use lo siguiente para evaluar una expresión (la constante 0 se evalúa como falsa).
#if 0
...
#endif
Este error también puede ocurrir si no estás siguiendo las reglas del marco
Me gusta
#define 1K 1024 // Macro rules must be identifiers error occurs
Motivo: Macro debe comenzar con una letra, no un número
Cambiar a
#define ONE_KILOBYTE 1024 // This resolves
Tenga en cuenta que también puede presionar este error si escribe accidentalmente:
#define <stdio.h>
...en lugar de...
#include <stdio.>
#ifdef 0
...
#endif
#ifdef espera una macro en lugar de expresión cuando se usa constante o expresión
#if 0
...
#endif
o
#if !defined(PP_CHECK) || defined(PP_CHECK_OTHER)
..
#endif
si se usa #ifdef, informa este error
#ifdef !defined(PP_CHECK) || defined(PP_CHECK_OTHER)
..
#endif
Donde #ifdef espera una macro en lugar de una macroexpresión
A veces, si copia un código de un documento PDF y lo pega en su editor; Se esconden extraños personajes. Entonces este error también puede ocurrir en esa situación.
Tenga cuidado, debe reemplazar todos los espacios en blanco copiados por los nuevos y también hacer lo mismo con los retornos de carro.
La directiva #ifdef se usa para verificar si se define un símbolo de preprocesador. El estándar ( C11 6.4.2 Identifiers
) exige que los identificadores no comiencen con un dígito:
identifier:
identifier-nondigit
identifier identifier-nondigit
identifier digit
identifier-nondigit:
nondigit
universal-character-name
other implementation-defined characters>
nondigit: one of
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
digit: one of
0 1 2 3 4 5 6 7 8 9
La forma correcta para usar el pre-procesador para bloquear el código es:
#if 0
: : :
#endif
También puedes usar:
#ifdef NO_CHANCE_THAT_THIS_SYMBOL_WILL_EVER_EXIST
: : :
#endif
pero debe estar seguro de que los símbolos no se establecerán inadvertidamente por un código que no sea el suyo. En otras palabras, no use algo como NOTUSED
o DONOTCOMPILE
que otros también pueden usar. Para estar seguro, se debe preferir la opción #if
.