_vsnprintf' : undeclared identifier
-
Habe folgenes Prob.
: error C2065: '_vsnprintf' : undeclared identifier
: warning C4018: '!=' : signed/unsigned mismatch
Error executing cl.exe.#include "menu.h" #pragma warning(disable: 4244) #pragma warning(disable: 4996) CIngameMenu c_Menu; void CIngameMenu::Init(IDirect3DDevice9* pDevice) { // Menüeinträge in Klasse übernehmen for (int i=0;i<ItemCount;i++) {Items[i] = MenuItems[i];} iSelected = 0; bActive = FALSE; ToggleKey = MENUKEY; // D3D Zeichenobjekt erstellen D3DXCreateLine(pDevice, &menuLiner); // D3D Font erstellen D3DXCreateFont(pDevice, 12, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Arial"), &menuFont ); bInited = TRUE; } void CIngameMenu::DeInit() { // Zeichenobjekt löschen menuLiner->Release(); // Font löschen menuFont->Release(); } void CIngameMenu::FillRGBA(int x, int y, int w, int h, int r, int g, int b, int a) { D3DXVECTOR2 vLine[2]; // Zeichenobjekt einstellen menuLiner->SetWidth(w); menuLiner->SetAntialias(FALSE); menuLiner->SetGLLines(TRUE); vLine[0].x = x + w/2; vLine[0].y = y; vLine[1].x = x + w/2; vLine[1].y = y + h; // Zeichnen bzw. mit Farbe füllen menuLiner->Begin( ); menuLiner->Draw( vLine, 2, D3DCOLOR_RGBA( r, g, b, a ) ); menuLiner->End( ); } void CIngameMenu::DrawBox(int x, int y, int w, int h, int r, int g, int b, int a,int rr, int gg, int bb, int aa) { FillRGBA(x,y+h,w,1,r,g,b,a); FillRGBA(x-1,y,1,h,r,g,b,a); FillRGBA(x,y-1,w,1,r,g,b,a); FillRGBA(x+w,y,1,h,r,g,b,a); FillRGBA(x,y,w,h,rr,gg,bb,aa); // Body color } void CIngameMenu::DrawString(int x, int y, int Red, int Green, int Blue, int Alpha, const char *text, ...) { D3DCOLOR fontColor = D3DCOLOR_ARGB(Alpha, Red, Green, Blue); RECT rect; va_list va_alist; char buf[256] = {0}; rect.left=x; rect.top=y; rect.right=rect.left+1000; rect.bottom=rect.top+1000; va_start (va_alist, text); _vsnprintf (buf+strlen(buf), sizeof(buf) - strlen(buf), text, va_alist); va_end (va_alist); menuFont->DrawText(NULL, buf, -1, &rect, 0, fontColor ); } void CIngameMenu::Show() { if (!bInited) return; if(bActive) { int x = 35; int y = 10; int r, g, b; int mr, mg, mb; int menur, menug, menub; r = mr = mg = mb = 255; g = b = 0; menur = menug = menub = 73; DrawBox(x-10,y-5,170,(y-5)+(15*ItemCount)+15,255,255,240,255,menur,menug,menub,232); for(int i=0;i<ItemCount;i++) { if(i!=iSelected) { DrawString(x,(y+15)+(15*i),mr,mg,mb,255,Items[i].Name); DrawString(x+135,(y+15)+(15*i),mr,mg,mb,255,"%2.2f",Items[i].Value); } else { DrawString(x,(y+15)+(15*i),r,g,b,255,Items[i].Name); DrawString(x+135,(y+15)+(15*i),r,g,b,255,"%2.2f",Items[i].Value); } } } } void CIngameMenu::KeyCheck() { if (!bInited) return; if (GetAsyncKeyState(ToggleKey)&1){ bActive = !bActive; } // Wenn menü nicht angezeigt wird das hier nicht bearbeitet if (bActive){ if (GetAsyncKeyState(VK_UP)&1){ if (iSelected > 0) iSelected--; }else if (GetAsyncKeyState(VK_DOWN)&1){ if (iSelected < ItemCount-1) iSelected++; }else if (GetAsyncKeyState(VK_LEFT)&1){ MenuItem* mi; mi = &Items[iSelected]; if (mi->Value - mi->Step > mi->Min) { mi->Value = mi->Value - mi->Step; }else{ mi->Value = mi->Min; } mi->Value = mi->Func(mi->Value); }else if (GetAsyncKeyState(VK_RIGHT)&1){ MenuItem* mi; mi = &Items[iSelected]; if (mi->Value < mi->Max) { mi->Value = mi->Value + mi->Step; mi->Value = mi->Func(mi->Value); } } }// Bis hier nur Menu }
-
ich habe auch so einige probleme. zum beispiel habe ich noch nie im lotto gewonnen
-
Warum bekommt man hier keine antworten?
-
auf welche frage?
-
TROLLALARM

-
Habe folgenes Prob.
: error C2065: '_vsnprintf' : undeclared identifier
: warning C4018: '!=' : signed/unsigned mismatch
Error executing cl.exe.Wie bekomme ich das weg
-
_vsnprintf gehört nicht zum Standard, da musst du schon in der Doku deines Compilers nachschauen, ob so eine Funktion unterstütz wird.
In C++ ist es aber auch nicht zu empfehlen, VA Listen zu verwenden. Streaming wie bei cout ist da besser.Zu der Warnung, du solltest keine signed/unsigned Werte vergleichen. Entweder beide signed oder beide unsigned. Alles andere kann zu falschen Ergebnissen führen.
-
Wo kann ich die Doku den sehen?
-
hast du überhaupt die includes drin?
-
Ja das habe ich auch gemacht
-
Panse schrieb:
Wo kann ich die Doku den sehen?
Also spätestens HIER könnte Dir klar werden, warum niemand das beantworten kann: Woher soll irgendjemand hier besser wissen als Du ?
Gruß,
Simon2.
-
Panse schrieb:
Wo kann ich die Doku den sehen?
Keine Ahnung. Wir wissen ja noch nicht mal, welchen Compiler du verwendest. ZB bei GCC (MinGW) sollte die im info Verzeichnis sein.
Ansonsten, durchsuche mal das include Verzeichnis, ob entsprechender Bezeichner überhaupt existiert.
Btw, wie kommst du überhaupt auf _vsnprintf?
-
Wer selbst nicht suchen will
http://msdn2.microsoft.com/en-us/library/1kt27hek(VS.80).aspx
-
Angemerkt sei, dass dies nur für den MSC gilt. Und da es das Standard Forum ist, ist nur ISO/IEC 14882 relevant. _/vsnprintf ist jedenfalls nur compilerspezifisch implementiert. Alle unterstützten C Funktionen, auch die mit VA Listen, findet man übrigens unter C.2-7.
-
meines kleinen wissens nach, sind alle funktionen mit einem unterstrich, und darauffolgender kleinschreibung keine standardfunktionen.