02. januar 2005 - 23:48
Der er
9 kommentarer og 1 løsning
va_list fejl under compile i C
ikke så stort et spørgsmål, men hvorfor virker det her ikke? int log(int timestamp, char *str, ...) { char *Buffer; time_t now; now = time((time_t *)NULL); va_list ap; //args list va_start(ap, str); Buffer = malloc(strlen(str)+strlen(ap)+1); vsprintf(Buffer, str, ap); //copy it to buffer va_end(ap); if(logfile == NULL) //just check return -1; if(timestamp == 1) { fprintf(logfile, "<br><font color=\"#000000\">[%s] %s</font>", ctime(&now), Buffer); } else { fprintf(logfile, "<br><font color=\"#000000\">%s</font>", ctime(&now), Buffer); } } jeg får fejlene : error C2275: 'va_list' : illegal use of this type as an expression C:\Programmer\Microsoft Visual Studio\VC98\INCLUDE\stdio.h(97) : see declaration of 'va_list' error C2146: syntax error : missing ';' before identifier 'ap' error C2065: 'ap' : undeclared identifier jeg kan ikke se nogen fejl nogensom helst steder.... nogen der kan se fejlen ???
Annonceindlæg fra DE-CIX
02. januar 2005 - 23:50
#1
okay fiksede lige nogen fejl, men nu får jeg ogging.obj : error LNK2001: unresolved external symbol _va_end Logging.obj : error LNK2001: unresolved external symbol _va_start
02. januar 2005 - 23:50
#2
ups skulle have været Logging.obj : error LNK2001: unresolved external symbol _va_end Logging.obj : error LNK2001: unresolved external symbol _va_start
02. januar 2005 - 23:58
#3
Hvis du flytter denne op i starten af funktionen: va_list ap; //args list Og inkluderer: #include <stdarg.h> #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> Burde det kompilere.
02. januar 2005 - 23:59
#4
ups tror det virker nu, manglede at include stdarg.h
03. januar 2005 - 00:03
#5
Man skal sætte warning level til 4 for at få en warning for kald af funktioner unden prototyper med Visual C++ (ved C kode). Jeg ved dog ikke hvor den får va_list fra.
03. januar 2005 - 01:56
#6
okay du har fortjent point'sne, men lige en sidste hvis du har tid: int packetlog(int len, const unsigned char *buf) { char logstring[1500]; char tmp[32]; char print[16]; int offset; log(0, "<font color=\"#3B3C3C\">"); for (offset = 0; offset < len;) { _snprintf(logstring, 1500, "[ DATA ] (0x%.4x) ", int(offset/16)*16); int loffset; for (loffset = 0; (loffset < 16) && (offset < len); loffset++) { _snprintf(tmp, 32, " %.2X", buf[offset]); if (isprint(buf[offset])) print[loffset] = buf[offset]; else print[loffset] = '.'; strcat(logstring, tmp); offset++; } for (; loffset < 16; loffset++) { strcat(logstring, " "); print[loffset] = 0; } strcat(logstring, " "); strcat(logstring, print); strcat(logstring, "<br>"); log(0, logstring); log(0, "</font><br>"); } log(0, " <hr width=\"300\"><br>"); } error C2059: syntax error : 'type' error C2143: syntax error : missing ';' before 'type' den fatter jeg ikke lige helt, og jeg har prøvet mange ting... virker den ikke i C (det er c++ kode jeg er ved at lave om til C)
03. januar 2005 - 01:59
#7
ups, det er self den her linie det er galt med _snprintf(logstring, 1500, "[ DATA ] (0x%.4x) ", int(offset/16)*16);
03. januar 2005 - 02:19
#8
har fundet ud af det, skulle bare rykke int loffset; op til de andre
03. januar 2005 - 19:55
#9
Jeg samler ikke på point.
03. januar 2005 - 22:24
#10
k
Kurser inden for grundlæggende programmering