Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Merik 28 Června 2008, 18:29:05
-
takze kdyz sem psal kod v Cecku pod linuxem a pouzil sem datovy typ bool v programu nebo jako navratovy typ funkce tak me kompilator vyhodil ‘bool’ undeclared
tak prosim jestli by nekdo neporadil jakou knihovnu nebo balicek dodat aby to jelo
diky
-
To nebude balíčkem, ani knihovnou - to bude chybou v kódu ::) Pokud můžete, dejte sem kód a určitě vám někdo(třeba i já) poradí ;)
-
Souhlasím,s nejvyšší pravděpodobností to bude jen chybka v kódu. Ale jestli náhodou nepíšeš v ANSI C. Tuším, že tam snad není datový typ bool definovaný. :-)
-
#include <stdio.h>
#include <SDL.h>
#define SDL_SUBSYSTEMS SDL_INIT_VIDEO
#define WIN_FLAGS SDL_ANYFORMAT|SDL_RESIZABLE
#define WIN_WIDTH 640
#define WIN_HEIGHT 480
#define WIN_BPP 0
#define WIN_TITLE "Program"
SDL_Surface *g_screen;
bool Init()
{
if(SDL_Init(SDL_SUBSYSTEMS) == -1)
{
fprintf(stderr, "Unable to initialize SDL: %s\n",
SDL_GetError());
return false;
}
g_screen = SDL_SetVideoMode(WIN_WIDTH, WIN_HEIGHT, WIN_BPP, WIN_FLAGS);
if(g_screen == NULL)
{
fprintf(stderr, "Unable to set %dx%d video: %s\n",
WIN_WIDTH, WIN_HEIGHT, SDL_GetError());
return false;
}
SDL_WM_SetCaption(WIN_TITLE, NULL);
return true;
}
void Destroy()
{
SDL_Quit();
}
bool ProcessEvent()
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
return false;
break;
default:
break;
}
break;
case SDL_QUIT:
return false;
break;
default:
break;
}
}
return true;
}
int main(int argc, char *argv[])
{
printf(WIN_TITLE);
if(!Init())
{
Destroy();
return 1;
}
bool done = false;
while(!done)
{
done = !ProcessEvent();
}
Destroy();
return 0;
}
-
No já teda nevim, ale myslím že by bylo jednodušší nahradit ten bool za obyčejný int a vystačit si s true=1 a false=0; to bude fungovat 100%.. někdy je lepší chybu přeskočit, než se u ní zaseknout ::)
-
No já teda nevim, ale myslím že by bylo jednodušší nahradit ten bool za obyčejný int a vystačit si s true=1 a false=0; to bude fungovat 100%.. někdy je lepší chybu přeskočit, než se u ní zaseknout ::)
ale zase zere to viac RAM a potom sa cudujem preco su programy tak narocne na RAM, treba ladit a setrit, bool v C neni definovany musis si ho nadefinovat takto (mam to z knihy ;D): "enum boolean (false = 0, true = 1);"
-
No já teda nevim, ale myslím že by bylo jednodušší nahradit ten bool za obyčejný int a vystačit si s true=1 a false=0; to bude fungovat 100%.. někdy je lepší chybu přeskočit, než se u ní zaseknout ::)
ale zase zere to viac RAM a potom sa cudujem preco su programy tak narocne na RAM, treba ladit a setrit, bool v C neni definovany musis si ho nadefinovat takto (mam to z knihy :-D): "enum boolean (false = 0, true = 1);"
Tak tak a nebo použít c++ kompilátor na todle :D
-
Implementace booleových konstant byla zařazena až do specifikace ISO-C99. A to přesněji do hlavičkového souboru stdbool.h (http://www.opengroup.org/onlinepubs/000095399/basedefs/stdbool.h.html).
-
No já teda nevim, ale myslím že by bylo jednodušší nahradit ten bool za obyčejný int a vystačit si s true=1 a false=0; to bude fungovat 100%.. někdy je lepší chybu přeskočit, než se u ní zaseknout ::)
ale zase zere to viac RAM a potom sa cudujem preco su programy tak narocne na RAM, treba ladit a setrit, bool v C neni definovany musis si ho nadefinovat takto (mam to z knihy :-D): "enum boolean (false = 0, true = 1);"
Myslím, že dnešní programy potřebují více ram spíše kvůli lolkárnám, jako je tahle:
char* pole=new char[3500000];
ifstream fin(soubor);
char znak;
int i=0;
while(fin.get(znak))
{
pole[i]=znak;
i++;
}
fin.close();
if(control>215)
{
delete [] pole; // uvolnění paměti
main();
}
else
{
cout << "bleble"; // tady na to někdo zapomněl :-o
zapis(pole, control); //
}
[code]
[/code]
-
tak toto snad uz asi ani nikto takto nerobi, nacitavanie po jednom znaku.
co sa tyka toho bool, tak sa da povedat o akej takej usetrenej pamati. No pravda je taka, ze sa neda adresovat velkost jedneho bitu, a teda pre bool sa vzdy adresuje 8 bitov = 1 bajt. Pre int je to tusim 4 bajty, ale ked sa pouzije unsingned short, tak je to este menej a vtedy uz rozdiel pamate je minimalny.
-
tak toto snad uz asi ani nikto takto nerobi, nacitavanie po jednom znaku.
Já to tak dělám ;D Nikde jsem ještě nic jiného nenašel(je to na builder.cz, v knížkách i na netu..). Jak to děláte vy?
-
tak toto snad uz asi ani nikto takto nerobi, nacitavanie po jednom znaku.
Já to tak dělám ;D Nikde jsem ještě nic jiného nenašel(je to na builder.cz, v knížkách i na netu..). Jak to děláte vy?
ja uz nijak :D v C++ som uz dlho nerobil, ale viem, ze v skole sme na to pouzivali trochu inu metodu. Zacinali sme tiez nacitavanim po znaku a potom nas profak naucil jednoduchsi sposob. Syntax si ale naozaj nespomeniem :(
-
tak toto snad uz asi ani nikto takto nerobi, nacitavanie po jednom znaku.
Já to tak dělám ;D Nikde jsem ještě nic jiného nenašel(je to na builder.cz, v knížkách i na netu..). Jak to děláte vy?
ja uz nijak :D v C++ som uz dlho nerobil, ale viem, ze v skole sme na to pouzivali trochu inu metodu. Zacinali sme tiez nacitavanim po znaku a potom nas profak naucil jednoduchsi sposob. Syntax si ale naozaj nespomeniem :(
Každopádně jste měli rozumnýho profesora.. naše učitelka se zmohla jen na výuku s OO a Office.. a taky na nakreslení obrázku v Gimpu pod Suse linuxem :'( Zatím s námi vůbec neprogramovala.