Hallo
Ich bin neu im Forum und versuch mal mein Glück, weil mit meinem Latein
bin ich definitiv am Ende. Und da ich GCC nicht aufgeben will mein
Gesuch hier an alle besser Erfahrenen...
ich verwende WINAVR mit comilper avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
sobald ich die Optimierungs option Os einschalte funktioniert diese
ausgabe nicht mehr.
Warscheinlich liegt es an dem warning welches ich in diesem fall nicht
wegbekommen denn es gibt keine vsprintf_P leider nicht.
(warning: second parameter of 'va_start' not last named argument)
1 | void DisplayStringFlash(PGM_P p_flashstring, ...)
|
2 | {
|
3 | va_list ap;
|
4 | BYTE len= strlen_P(p_flashstring);
|
5 | char* tempstring;
|
6 | len+=4; //safty for word
|
7 | //Allocate new memory if memory already exist
|
8 | if(displaybuffer.buffer)
|
9 | {
|
10 | //buffer needs to be deleted and newly allocated
|
11 | while(displaybuffer.bufferlock){};
|
12 | free(displaybuffer.buffer);
|
13 | displaybuffer.buffer=(char*)malloc(len);
|
14 | tempstring=(char*)malloc(len);
|
15 | }
|
16 | else
|
17 | {
|
18 | //buffer does not exist an need to be allocated
|
19 | displaybuffer.buffer = (char*)malloc(len);
|
20 | tempstring=(char*)malloc(len);
|
21 | }
|
22 | strcpy_P(tempstring,p_flashstring);
|
23 | va_start(ap,tempstring);
|
24 | while(displaybuffer.bufferlock){};
|
25 | vsprintf(displaybuffer.buffer,tempstring,ap); <- Das problem sitzt hier denk ich
|
26 | va_end(ap);
|
27 | free(tempstring);
|
28 | displaybuffer.direction=LEFT;
|
29 | displaybuffer.scroll=1;
|
30 | displaybuffer.startindex=0;
|
31 | }
|
mein makefile mit allen options schaut so aus
CPPFLAGS = -g$(DEBUG)
CPPFLAGS += $(CPPDEFS)
CPPFLAGS += -O$(OPT)
#CPPFLAGS += -mint8
#CPPFLAGS += -mshort-calls
CPPFLAGS += -funsigned-char
CPPFLAGS += -funsigned-bitfields
CPPFLAGS += -fpack-struct
CPPFLAGS += -fshort-enums
CPPFLAGS += -fno-exceptions
#CPPFLAGS += -fno-unit-at-a-time
CPPFLAGS += -Wall
#CPPFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
#CPPFLAGS += -Wunreachable-code
#CPPFLAGS += -Wsign-compare
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CPPFLAGS += $(CSTANDARD)
also über hilfe jeglicher art wäre ich echt dankbar, weil sonst müsste
ich GCC wirklich aufgeben... sniff
danke mal
und liebe grüsse