We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Someone could please tell me why this little piece of code generate ***** syntax error near 'char' #include <stdio.h> /* standard I/O .h-file */ #include <XC161.h> /* special function register XC161 */ #include <math.h> /****************/ /* main program */ /****************/ void main (void) { /* execution starts here */ /* initialize the serial interface */ #ifndef Monitor /* do not initialize if you use Monitor-166 */ P3 |= 0x0400; /* SET PORT 3.10 OUTPUT LATCH (TXD) */ DP3 |= 0x0400; /* SET PORT 3.10 DIRECTION CONTROL (TXD OUTPUT) */ DP3 &= 0xF7FF; /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */ ASC0_TIC = 0x80; /* SET TRANSMIT INTERRUPT FLAG */ ASC0_RIC = 0x00; /* DELETE RECEIVE INTERRUPT FLAG */ ASC0_BG = 0x40; /* SET BAUDRATE TO 9600 BAUD @ 20MHz */ ASC0_CON = 0x8011; /* SET SERIAL MODE */ ALTSEL0P3 |= 0x0C00; /* Configure port pins for serial interface 0 */ #endif char nome[10]; int i; int j=0; while (1) { i=-1; nome[0]='a'; /* An embedded program does not stop and */ do { i++; nome[i]=getchar(); // printf("%c",nome[i]); } while (nome[i]!=0x00A); printf("Ciao, "); for (j=0;j<=i;j++) printf("%c",nome[j]); } /* loop. You may wish to put in your own */ } and instead this works : #include <stdio.h> /* standard I/O .h-file */ #include <XC161.h> /* special function register XC161 */ #include <math.h> /****************/ /* main program */ /****************/ void main (void) { /* execution starts here */ /* initialize the serial interface */ #ifndef Monitor /* do not initialize if you use Monitor-166 */ P3 |= 0x0400; /* SET PORT 3.10 OUTPUT LATCH (TXD) */ DP3 |= 0x0400; /* SET PORT 3.10 DIRECTION CONTROL (TXD OUTPUT) */ DP3 &= 0xF7FF; /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */ ASC0_TIC = 0x80; /* SET TRANSMIT INTERRUPT FLAG */ ASC0_RIC = 0x00; /* DELETE RECEIVE INTERRUPT FLAG */ ASC0_BG = 0x40; /* SET BAUDRATE TO 9600 BAUD @ 20MHz */ ASC0_CON = 0x8011; /* SET SERIAL MODE */ ALTSEL0P3 |= 0x0C00; /* Configure port pins for serial interface 0 */ #endif while (1) { char nome[10]; int i; int j=0; i=-1; nome[0]='a'; /* An embedded program does not stop and */ do { i++; nome[i]=getchar(); // printf("%c",nome[i]); } while (nome[i]!=0x00A); printf("Ciao, "); for (j=0;j<=i;j++) printf("%c",nome[j]); } /* loop. You may wish to put in your own */ } /* for both of them, i've choose the small memory model, and near 6 for data threshold. Pleas help me, or i'll go crazy!
"they are usually problems of misunderstanding (or lack of understanding) of what the preprocessor is and/or does - resulting in 'C' syntax problems in the preprocessor output." Yes, you have a good point there. I wonder whether the OP perhaps doesn't understand what #ifndef actually does?