Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
03.02.2003, 12:34
K-Putt



Kommt ja in der Windows-Programmierung, und auch im HL Source öfters vor:

BOOL Funktion()

aber auch

bool Funktion()

Ich weiß das es der rückgabetyp der Funktion ist, aber welcher unterschied besteht zwischen bool (kleingedruckt) und BOOL (capslock) ?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
001
03.02.2003, 14:38
Kriz



BOOL basiert auf einem C-Makro, da die WinAPI ja in C geschrieben worden ist, während bool der logische Datentyp in C++ ist:

#define BOOL int
#define FALSE 0
#define TRUE 1

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
002
03.02.2003, 14:47
[RMen]OneStone



Wobei bool dann meistens so groß wie ein char ist (AFAIK), und int halt viermal so groß.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
003
03.02.2003, 14:52
HammerBlade



BOOL ist gleich int, da BOOL durch Micro$oft aus irgendwelchen Günden definiert wurde:
Quellcode:#define BOOL int
D.h. BOOL kann alle Werte annehmen die auch int annehmen kann, d.h BOOL ist kein echter boolscher Wert!

bool ist ein echter boolscher Wert (und eigentlich die sauberer Lösung), da er nur true oder false annehmen kann.

Wenn du eine Funktion hast die BOOL zurückgibt, dann typcast das nicht in bool, denn z.B. Funktionen der MFC von Micro$oft geben mit unter auch negative Werte in einem BOOL zurück, die dann eine Fehlermeldung darstellen und ein bool kann keine negative Werte annehmen.

*edit*
Verdammt zu spät!

--

"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon
Auspack und freu! - Auszug aus einer, aus dem japanischen übersetzten, Bedienugsanleitung für ein Spielzeugaquarium.
--
Photon Audio Player | Majestic42.net | How To Ask Questions The Smart Way


Dieser Beitrag wurde am 03.02.2003 um 14:53 von HammerBlade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
03.02.2003, 15:31
Kriz



@HammerBlade: bool ist nur dann die bessere Lösung, solange man mit einem C++ Compiler arbeitet. Unter C gibt's kein bool (weiß nicht, wie C99 das sieht).

Desweiteren sagt die Definition:

false = 0 und true != 0. Theoretisch ist also -1 für bool dasselbe wie true. Nur strikte Sprachdefinitionen wie in Java (wo das übrigens nicht bool sondern boolean heißt) erlauben nur true und false als Werte. Typkonvertierungen wie in C/C++ sind in Java z.B. nicht erlaubt, d.h. der logische Datentyp boolean ist dort absolut inkompatibel zu allen anderen primitiven Datentypen.

Als alter C/C++'ler ist das irgendwie voll nervig, aber andererseits auch verständlich. Hm, eigentlich ist das voll Kagge >=)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
005
03.02.2003, 16:26
K-Putt



Danke für die schnelle und ausführliche Hilfe :)

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
006
03.02.2003, 19:48
Tron



Zitat:
Wobei bool dann meistens so groß wie ein char ist (AFAIK), und int halt viermal so groß.
jo, per standard ist sizeof(bool) == sizeof(char)

Zitat:
BOOL ist gleich int, da BOOL durch Micro$oft aus irgendwelchen Günden definiert wurde:
damals gab es noch kein bool, quasi jeder hat das so gemacht, m$ hat das net erfunden. wobei manche leute auf die abstruse idee kamen:
#define TRUE 0
#define FALSE 1
was unheimlich viel spas beim fehlersuchen bringt, wenn man mit einer bibliothek von so jemandem arbeiten muss...

Zitat:
(weiß nicht, wie C99 das sieht)
gibt's in c99

Zitat:
Theoretisch ist also -1 für bool dasselbe wie true.
ein ganz klares jein...
bei
bool b = -1;
wird eine implizite typumwandlung durchgefuehrt, so als haette man
bool b = static_cast<bool>(-1); // bool b = (bool)-1; fuer die c'ler da draussen (;
geschrieben.
das bedeutet es wird der wert 1 (per definition true), egal welchen wert != 0 man benutzt, in die bool variable geschrieben.
die existenz dieser impliziten umwandlung ist wohl mit kompatibilitaet zu c zu beantworten, z.b. fuer bibliotheken, die int als bool-ersatz verwendet haben.

Zitat:
Hm, eigentlich ist das voll Kagge >=)
genau (:
java is ja sowieso keine echte sprache (<

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
03.02.2003, 21:05
Horat



nich?
als find schon das des ne sprache is. Man kann sie nur nich so gut umsetzen wie C/Cpp =)

--

Bild Blog <--

zum Seitenanfang zum Seitenende Profil || Suche
008
04.02.2003, 08:47
Kriz



Natürlich ist Java eine richtige Sprache, Tron labert nur gerne mal im Suff >;)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche