#define MAX_STRING 256;
significa:
Cada vez que encuentre MAX_STRING al preprocesar, reemplazarlo con 256;
. En su caso, se creará el método 2:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING 256;
int main(void) {
char buffer [256;];
}
que no es una sintaxis válida.Reemplazar
#define MAX_STRING 256;
con
#define MAX_STRING 256
La diferencia entre los dos códigos es que en el primer método se declara una igualdad constante para 256
pero en el segundo código que defina MAX_STRING
reposar durante 256;
en el archivo de origen .
La directiva #define se utiliza para definir los valores o las macros que utiliza el preprocesador para manipular el código fuente del programa antes de que se compile. Debido a que las definiciones del preprocesador se sustituyen antes de que el compilador actúe sobre el código fuente, cualquier error que introduzca #define es difícil de rastrear.
La sintaxis es la siguiente:
#define CONST_NAME VALUE
si hay un ;
al final, se considera como una parte de VALUE
.
para entender cómo es exactamente #define
s de trabajo, trate de definir:
#define FOREVER for(;;)
...
FOREVER {
/perform something forever.
}
observación interesante por John Hascall:
mayoría de los compiladores le dará una manera de ver la salida después de la fase de preprocesador, este puede ayudar con problemas de depuración como este.
En gcc
se puede hacer con la bandera -E
.
Retire el; en el método 2 –
Ver la salida del preprocesador y la respuesta será mirarlo a la cara. –
@MichaelFoukarakis, sí, es la forma más fácil 'cpp prog_name.c | cola' decirlo todo. – user51390233