declaracion desconocida de bool

23/05/2005 - 18:54 por Marcio | Informe spam
Buenos días, tengo un código fuente que me mandaron
y que estuve examinando del cual no entiendo la
forma en que declara los atributos booleanos.
Busqué en google hasta cansarme pero no encontré nada.
Les agrega un :1 al final de cada nombre y no
se porque es. Alguien me dijo que era para indicarle
que ocupe solo 1 bit en memoria.
¿es esto cierto?
¿es ansi c++ o solo funciona con el compilador de vs?
¿hay algún enlace a algún tipo de documentación sobre el tema?

Parte del código fuente en cuestión:

class __PROF_UIS_API CExtBarButton : public CObject
{
public:
DECLARE_DYNCREATE(CExtBarButton);
protected:
CSize m_ActiveSize;
CRect m_ActiveRect;
bool m_bWrapH:1,
m_bWrapV:1,
...(sigue definiendo booleanos)

Gracias de antemano
Marcio

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
24/05/2005 - 10:51 | Informe spam
Es, efectivamente, un truco para que el booleano solo ocupe 1 bit en
memoria. Pero ojo no siempre es conveniente usarlo. Lee sobre bit fields en
C/C++. Si que es estandar.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
#2 Isidro Muñoz
24/05/2005 - 11:29 | Informe spam
Hola,

Yo es la primera vez que veo esa declaración. De todos ¿ para que quieres
que ocupe solo un bit ?

Me imagino que lo que hará es que en un unico byte almacenar todos los bool,
o sea, podrá almacenar hasta 8 bool en el byte de esta forma.

Personalmente pienso que es para ahorrar bytes de memoria o de pila.

Yo está técnica la tendría en cuenta si voy a hacer por ejemplo una función
recursiva que va a consumir mucha pila, y la recursividad es muy grande. O
en caso de memoria que vaya a instanciar muchas veces esta clase, si no
fuera así yo no lo haría.

Hablando a vote pronto creo que este ahorro de memoria va a repercutir en
más ciclos de cpu. Primero hay que indireccionar y luego operaciones bit a
bit.

En fin, es mi opinión.

Saludos.
Isidro.

"Marcio" escribió en el mensaje
news:
Mostrar la cita
#3 Zephryn Xirdal
24/05/2005 - 11:41 | Informe spam
On Tue, 24 May 2005 11:29:43 +0200, Isidro Muñoz daipro.net> <<imunoz>
wrote:

Mostrar la cita
Depende de la máquina y los recursos disponibles. Hay CPUs con acceso
directo a bits tanto en registros como en memoria (o en áreas específicas
de la memoria). Si tienes poca memoria (windows ce, win mobile, etc), no
tienes más remadio que hacer eso.

Mostrar la cita
#4 Isidro Muñoz
25/05/2005 - 09:57 | Informe spam
Tu lo has dicho, "si tienes poca memoria"

Saludos.
Isidro.

"Zephryn Xirdal" escribió en el
mensaje news:
Mostrar la cita
quieres
Mostrar la cita
en
Mostrar la cita
#5 Zephryn Xirdal
25/05/2005 - 10:24 | Informe spam
On Wed, 25 May 2005 09:57:15 +0200, Isidro Muñoz daipro.net> <<imunoz>
wrote:

Mostrar la cita
No te vayas a creer que todos vivimos con 512 Mb de RAM, una máquina de
vending o cualquier otro hadware vertical embebido tiene apenas ram.

Lo normal en esos dispositivos es ir muy escaso de recursos... 512 bytes,
1k, 2k y cosas así.



Mostrar la cita
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Ads by Google
Search Busqueda sugerida