bool undefined identifier
-
#include <windows.h> #include <gl/gl.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // UINT = unsigned int // LPSTR = char* // HINSTANCE = Handle to an "instance" -> the program itself // HWND = Handle to a window // HDC = Handle to a device context (output device) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow) { char szAppName[] = "OpenGL"; HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW |CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox (NULL, "An Error has occured!", szAppName, MB_ICONERROR | MB_OK); return 0 ; } hwnd = CreateWindow (szAppName, // window class name "OpenGL", // window caption (title) WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); bool quit = false; // main.c|49|error: `bool' undeclared (first use in this function) while (!quit) { if (PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)) { if (msg.message != WM_QUIT) { TranslateMessage(&msg); DispatchMessage(&msg); } else quit = true; } else { // OpenGL here } } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hwnd, message, wParam, lParam); }
Hallo,
Ich wollte gerade mit OpenGL beginnen, hab meine Vorlage kopiert, einige Anpassungen gemacht und wollte mal zum Test compilen.
Da sagt der mir doch glatt:
main.c|49|error: `bool' undeclared (first use in this function)
Hab den Code einige Male durchgeschaut und wird einfach nicht schlau draus...
Sieht einer von euch vielleicht den Fehler?
Dankeschön,
SamEDIT: Hab das Problem gelöst, in der windows.h scheint es kein bool zu geben, dann verwende ich halt BOOL ^^
-
Hab nun doch noch ein weiteres Problem
Wollte aber keinen zweiten Thread aufmachen (Sorry für Double Post):
if (PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)) { if (msg.message != WM_DESTROY) { TranslateMessage(&msg); DispatchMessage(&msg); } else { MessageBox(NULL, "WM_DESTROY", NULL, MB_OK); quit = TRUE; } }
Eine MessageBox wird nie aufgerufen, dass heisst die Message WM_DESTROY wird nie gesendet, auch nicht wenn ich das Fenster schliesse?!
Weiss wer woran das liegen könnte?Dankeschön,
Sam
-
Huhu,
zu deinem ersten Problem:
#include <stdbool.h>
-
#define true ('/'/'/') #define false ('-'-'-')
Keine Ahnung was genau bei dir nicht funktioniert, aber auf http://www.winprog.org/tutorial/ gibt es eine ziemlich gute Anleitung wie es geht.
-
nwp2 schrieb:
#define true ('/'/'/') #define false ('-'-'-')
^^was ist das für'n quatsch?
OP: wenn <stdbool.h> nicht da ist, benutze z.b. BOOL, TRUE, FALSE (also alles gross). wenn du <windows.h> includierst, dann haste die.
-
--
-
;fricky schrieb:
nwp2 schrieb:
#define true ('/'/'/') #define false ('-'-'-')
^^was ist das für'n quatsch?
Verstehst Du den Code nicht oder hast Du nur keinen Humor? :xmas1:
-
oder, wenn man auf selbermachen steht:
typedef enum {false, true} bool;
-
volkard mein Respekt für dich ist gerade enorm gestiegen. Dachte nicht dass hier wer Humor hat. Das kommt übrigens nichmal von mir, ist geklaut von hier: http://www.steike.com/code/useless/evil-c/
-
volkard schrieb:
Verstehst Du den Code nicht oder hast Du nur keinen Humor?
ich hab's bis eben nicht verstanden. fieses ding *fg*
-
nwp2 schrieb:
Dachte nicht dass hier wer Humor hat.
wenigstens hast du welchen, das beweist du ja regelmässig im ansi-C forum *fg*