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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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