sirve que para must macro ifdef identifiers example c++ macros c-preprocessor

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 .