AtmelStudio 6 - varning vid kompilering.
Postat: 13 juli 2012, 15:36:07
Har uppgraderat till AtmelStudio 6 och fick plötsligt en hop med nya varningar som jag aldrig haft innan. En varning ser ut så här:
Problemet uppstår då jag i main.h deklarerar:
extern uint8_t PROGMEM tpscan[];
sedan i main.c definieras den:
uint8_t PROGMEM tpscan[] = "scannar NTC sensorer\n";
Men variabeln används senare på flera ställen i programmet, både i main.c och i en annan fil - bms.c:
print(tpscan);
main.h innehåller #include bms.h
bms.h innehåller #include main.h
bms.c innehåller #include bms.h
Jag har flera texter i programminnet som är deklarerade på samma sätt (som extern i main.h och definerade senare i main.c) och de fungerar utan varning att använda i just main.c senare. Problemet med just tpscan[] är att den används även i filen bms.c. Det är ju därför variablerna är deklarerade som externa - att de ska kunna användas i alla filer i projektet.
Hur ska jag göra för att inte få den här varningen? Och innebär den att något kan gå fel med variabeln, eller är det en "ofarlig" varning? Det funkade ju uppenbarligen i AVR Studio 5...
Jag kan inte tolka om det innebär att innehållet i den variabeln kan bli förstört eller på fel plats eftersom den än oinitierad och då vet väl inte kompilatorn hur stort utrymme den ska ta upp, Så hur stor plats reserveras egentligen?Warning 1 ... uninitialized variable 'tpscan' put into program memory area [-Wuninitialized] F:\dok\Dropbox\Avrstudio\bms6\bms6\main.h 379 25 bms6
Problemet uppstår då jag i main.h deklarerar:
extern uint8_t PROGMEM tpscan[];
sedan i main.c definieras den:
uint8_t PROGMEM tpscan[] = "scannar NTC sensorer\n";
Men variabeln används senare på flera ställen i programmet, både i main.c och i en annan fil - bms.c:
print(tpscan);
main.h innehåller #include bms.h
bms.h innehåller #include main.h
bms.c innehåller #include bms.h

Jag har flera texter i programminnet som är deklarerade på samma sätt (som extern i main.h och definerade senare i main.c) och de fungerar utan varning att använda i just main.c senare. Problemet med just tpscan[] är att den används även i filen bms.c. Det är ju därför variablerna är deklarerade som externa - att de ska kunna användas i alla filer i projektet.
Hur ska jag göra för att inte få den här varningen? Och innebär den att något kan gå fel med variabeln, eller är det en "ofarlig" varning? Det funkade ju uppenbarligen i AVR Studio 5...
