Hi,
Ich hab ein Problem/Frage:
Ich hab in meinem Code mehrere Stellen, wo ich Meldungen ausgebe.
es gibt merhere Meldungen, die den selben Text enthalten.
Die strings sind komplett identisch (selbes #define), jedoch legt der
compiler die 2 mal an, anstatt sie einmal anzulegen und den pointer auf
das selbe zeigen zu lassen.
Die zeichenketten selbst liegen im program memory, können also nicht
verändert werden.
beispiel:
1 | /**
|
2 | @brief macros for automatically storing string constant in program memory
|
3 | */
|
4 | #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s))
|
5 |
|
6 | #define ERROR_SD_READ "Error SD_read"
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | if( 0 != getSDinfos(&sdInfo) ){
|
13 | lcd_init(LCD_DISP_ON);
|
14 | lcd_puts_P( ERROR_SD_READ );
|
15 | HALT;
|
16 | }
|
17 |
|
18 |
|
19 | if(0 != SD_readSingleBlock(sdInfo.rootDirSector, (uint8*)s_logBuf,8)) /* temporary use logging buffer */
|
20 | {
|
21 | lcd_init(LCD_DISP_ON);
|
22 | lcd_puts_P( ERROR_SD_READ );
|
23 | HALT;
|
24 | }
|
wenn ich jetzt ins list-file oder ins elf-file schaue, gibts den string
"Error SD_read" mehrmals.
Was muss ich tun, damit der string nur einmal eingebunden wird?