beim zweiten Beispiel hast die Variable ch global definiert.
Ich wollte sie natürlich gleich lokal definieren was der compiler nicht mag.
Um so größer war meine Verwunderung das der Compiler die unveränderte Zeile als globale Variable akzeptiert.
Code: Alles auswählen
#include <stdio.h>
int main(void) {
unsigned char *p;
unsigned char ch @ 0xF402;
p = (unsigned char *) 0xF400;
*p = 23;
ch = 16;
printf("%d\n", *p);
printf("%d\n", ch);
printf("%d\n", *((unsigned char *) 0xF402));
return 0;
}
absolute.c:5:22: error: Missing token, expecting ; got @
absolute.c:5:22: error: Invalid expression
absolute.c:5:24: fatal error: Expected ';'
Compilation aborted
während
Code: Alles auswählen
#include <stdio.h>
unsigned char ch @ 0xF402;
int main(void) {
unsigned char *p;
p = (unsigned char *) 0xF400;
*p = 23;
ch = 16;
printf("%d\n", *p);
printf("%d\n", ch);
printf("%d\n", *((unsigned char *) 0xF402));
return 0;
}