Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

04.02.2005, 22:45

Unterschied von BOOL und bool

Was ist eigentlich der unterschied zwischen BOOL und bool, oder zwischen void und VOID. Im Buch wird ja auch manchmal die großgeschriebene Variante verwendet. Ich merke da keinen Unterschied.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

04.02.2005, 22:49

typedef int BOOL; //verwendet von der WinAPI

bool is ein C/C++ typ und kann entweder true oder false sein...

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

3

04.02.2005, 23:45

Die Frage ist jetzt nur...was ist besser?

Wird BOOL nur verwendet von C-Freaks, die sich an die C-WinAPI gewöhnt haben und nicht nach bool umdenken oder hat es sonst auch Vorteile?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

05.02.2005, 00:44

afaik hat bool 1 byte...

ich schätze mal, der compiler dürfte das beim optimieren aber sowieso auf 4 byte alignen...

bool kann afaik nur true und false werden, während BOOL im prinzip jeden integer wert annehmen kann ( is ja ein int )...

PD

unregistriert

5

05.02.2005, 10:28

afaik hat bool sogar nur 1Bit... Der Vorteil von bool ist eindeutig das er nut true und false haben kann. Bei BOOL ist die gefahr aus irgendwelchen gründen doch andre Zahlen drin zu speichern und dann durcheinander zu kommen ;) bool ist aber afaik offiziel ein C++ typ, also nicht C und die WinAPI ist ja C weshalb die dort eben auf BOOL als Int umsteigen mussten (zusammen mit den Konstanten TRUE und FALSE).

Ich glaube es gab bei gotw oder so nen Artikel darüber wie man en bool "faked" und wo die vorteile des echten bools liegen...
hier: http://www.gotw.ca/gotw/026.htm

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

6

05.02.2005, 11:29

Probier dch einfach mal

C-/C++-Quelltext

1
std::cout << sizeof(bool) << '\n';

aus.

Je nach Compiler wirst du vermutlich 1 oder 4 bekommen.
Why is 6 afraid of 7?
Because 7 8 9

7

05.02.2005, 11:51

Naja, ich hab sowohl bei VC2003 Std. als auch mit dem gcc 1 bekommen.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

8

05.02.2005, 12:05

Das heißt, ein "BOOL" im C++-Programm, welches zwar WinAPI verwendet, welches aber das BOOL nur intern benutzt und welches dem BOOL nur TRUE oder FALSE zuweist, ist komplett überflüssig und durch ein "bool" zu ersetzten?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

PD

unregistriert

9

05.02.2005, 12:09

richtig :) Weil dafür ist bool ja ausgelegt (BOOL jedoch nicht).

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

10

05.02.2005, 13:07

Hi,

BOOL ist ein typedef aus alten C-Zeiten wo es noch kein C++ gab.

Ihr sollt euch net streiten um die Größe (So ein Schwachsinn! Wer hat den Größeren bool :D)

Wie hoch die Mindestgröße in Bytes ist (1Bit fürn bool geht net! Denkt doch mal richtignach!) und obs ein Typedef ist könnt hier hier sehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>

int main (void)
{
    std::cout << "Groesse von BOOL (typedef " << typeid(BOOL).name() << " BOOL;) betraegt " << sizeof(BOOL) << " Bytes." << std::endl;
    std::cout << "Groesse von bool (typedef " << typeid(bool).name() << " bool;) betraegt " << sizeof(bool) << " Bytes." << std::endl;

    std::cin.get();

    return 0;
}


Ausgabe:
Groesse von BOOL (typedef signed int BOOL;) betraegt 4 Bytes.
Groesse von bool (typedef bool bool;) betraegt 1 Bytes.

Wie man sieht, bool ist ein buildin-type mit einer Mindestgröße von 1 Byte (Das bedeutet 8 Bit) während BOOL ein signed int mit einer Mindestgröße von 4 Bytes (Also mindestens 32 Bit).

Natürlich benutzt man bool und nicht mehr BOOL! Das selbe gillt für true/false mit TRUE/FALSE!

Achtung: Aus alten Spielen wie z.B. DukeNukem3D oder Descent1 war BOOL als unsigned char definiert.

Werbeanzeige