#define MAX_STRING 256;
significa:
ogni volta che si trovano MAX_STRING quando pre-elaborazione, sostituirlo con 256;
. Nel tuo caso verrà applicato il metodo 2:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING 256;
int main(void) {
char buffer [256;];
}
che non è una sintassi valida.Sostituire
#define MAX_STRING 256;
con
#define MAX_STRING 256
La differenza tra le due codici è che in primo metodo si dichiara una costante pari a 256
ma nel secondo codice si definisce MAX_STRING
riposare per 256;
nel file sorgente .
La direttiva #define viene utilizzata per definire valori o macro che vengono utilizzati dal preprocessore per manipolare il codice sorgente del programma prima che venga compilato. Poiché le definizioni del preprocessore vengono sostituite prima che il compilatore agisca sul codice sorgente, gli errori introdotti da #define sono difficili da tracciare.
La sintassi è:
#define CONST_NAME VALUE
se c'è un ;
alla fine, è considerato come una parte di VALUE
.
per capire come esattamente #define
s lavoro, provare a definire:
#define FOREVER for(;;)
...
FOREVER {
/perform something forever.
}
Interessante osservazione di John Hascall:
maggior parte dei compilatori vi darà un modo per vedere l'uscita dopo la fase di preprocessore, questo può aiutare con problemi di debug come questo.
In gcc
può essere fatto con la bandiera -E
.
Rimuovere la; nel metodo 2 –
Visualizza l'output del preprocessore e la risposta ti guarderà in faccia. –
@MichaelFoukarakis sì, è il modo più semplice per cpp prog_name.c | la coda dice tutto. – user51390233