Usando define...

Started by juansrx, August 16, 2011, 11:11:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

juansrx

Hola a todos, disculpenme por molestarlos de nuevo, solo quiero saber si, por ejemplo, en un archivo llamado "A.inc" tengo esto:

#define HEAD int a;char b;

...

Y en el archivo "main.prg" tengo esto:

#include "A.inc"

process main()
Private
   HEAD
end

begin

   //lo demas


end


Hasta el momento, esto no me complia, lo que quiero hacer es una "reutilizacion" de variables por proceso,
sintener que recurrir a public, ni escribir el mismo codigo vez tras vez. ¡existe alguna manera posible de hacerlo?.

De antemano gracias.

SplinterGU

compila perfectamente

Copyright � 2006-2011 SplinterGU (Fenix/BennuGD)
Copyright � 2002-2006 Fenix Team (Fenix)
Copyright � 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)


File t.dcb compiled (13568 bytes):

  Processes                     1
  Global data                 140 bytes
  Local data                   44 bytes
  Private data                  8 bytes
  Public data                   0 bytes
  Code                          4 bytes
  System processes              3
  Globals vars                  3
  Locals vars                   7
  Private vars                  2
  Publics vars                  0
  Identifiers                 189
  Structs                       1
  Strings                       3 (21 bytes)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Lo que buscas no se hace con define, sino con TYPE

TYPE head
    int a;
    char b;
END


Esto lo pones fuera de todas las secciones (recomendable ponerlo antes de la declaración de GLOBAL, LOCAL y demás, o en un include, como haces ahora) y ya puedes crear todas las variables que quieras de ese tipo.


process...
private
    head mi_variable;
begin
    mi_variable.a=45;
    ...


Eso sí, dichas variables respetan las mismas normas de "visibilidad" (acceso) según se declaren como GLOBAL, LOCAL, PUBLIC o PRIVATE.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

drumpi, no es lo mismo, no es lo que pide... el no quiere acceder a mivariable.a, quiere acceder a "a".

le estas proponiendo lo que no pidio.

asi como lo hizo esta bien... no se que error le da, pero a mi me compila perfecto.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juansrx

El asunto puntual es el siguiente: tengo a.inc:

#define A private int a;char b; end


Y ahora b.prg:

#include "a.inc"

process main()
A
begin
end

Y lo que me da es esto (por favor ver anexo):


Drumpi

¿Puede ser que A tenga el mismo nombre que una de las variables que contiene? Ten en cuenta que bennu no es sensible a mayúsculas y minúsculas, como otros lenguajes.

Es sólo una suposición, porque me he perdido un poco, no sé qué es lo que estás haciendo ^^U
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

claro hombre, int "a", la A esta definiendose recursivamente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juansrx

De hecho, repitiendo mi primer "ejemplo" tal cual no me da ningun problema, asi que creo que tienen razon sobre la variable recursiva, gracias a los dos por su ayuda!!  :) :)

Una ultima pregunta: exite alguna manera de incluir "nuevas lineas" en un define?, por ejemplo:

#define PEDAZO private[nueva linea]
   int a;[nueva linea]
   char b;[nueva linea]
  end[nueva linea]

Es decir, todo en un define DEBE necesariamente estar en una misma linea??

Gracias de nuevo!!.


SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2