pregunta sobre cabeceras c++ y un poco de windows

Iniciado por Borito30, 13 Febrero 2017, 19:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Borito30

En este caso mi cabecera se llamara resource.h y contendrá lo siguiente:
#ifndef RESOURCE_H_INCLUDED
#define RESOURCE_H_INCLUDED

#define ELEXE "ELEXE"

#endif // RESOURCE_H_INCLUDED

Mi pregunta es porque cuando se crea una cabecera suele inclurse primero por poner un ejemplo:
#ifndef RESOURCE_H_INCLUDED
#define RESOURCE_H_INCLUDED

#endif

Y en que afecta #define ELEXE "ELEXE", en este caso estaría defiendo un parametro o que es exactamente como afectaría a mi programa principal.Ya que en un programa que hice  al asignarle el mismo nombre lo reconocio como un recurso válido. Entonces mi pregunta que es lo que haria exactamente el codigo de mi cabecera:
#define ELEXE "ELEXE"


Cuando hago esto
string exe = "ELEXE";
HRSRC res=FindResource(NULL,exe.c_str(),RT_RCDATA);


Me lo reconoce como un nombre de recursos valido en caso de poner otro nombre me daría error en mi funcion windows.
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

dato000

Es por convención, imagino que el compilador necesita tener un recurso identificado y asignado a una variable para una referencia en los metodos que se necesitan.



Borito30

Cita de: dato000 en 13 Febrero 2017, 21:18 PM
Es por convención, imagino que el compilador necesita tener un recurso identificado y asignado a una variable para una referencia en los metodos que se necesitan.

Sería como una constante por ejemplo:
#define TOM 10
int main(){
int array[TOM];
return 0
...


Si no estoy equivocado creo que sería eso en mi caso es un nombre luego una string referenciando al nombre de un recurso.
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

dato000

Exactamente, es como una variable global, que se guarda en todo el tiempo de compilación y ejecución.



class_OpenGL

Cuando usas un define básico, lo que hace el compilador, antes de compilar propiamente, preprocesa el código. En el caso de los define, el preprocesador lo que hace es sustituir literalmente lo que hayas puesto como primera palabra con todo lo que le sigue.

Ejemplo:

Código (cpp) [Seleccionar]
#define UN_DEFINE variable

int main() {
   int UN_DEFINE;
   
   UN_DEFINE = 10;
   
   return 0;
}


Al preprocesar el código, quedaría así:

Código (cpp) [Seleccionar]
int main() {
   int variable;
   
   variable = 10;
   
   return 0;
}


Esos son los 'define' más básicos, se pueden elaborar más (por ejemplo, con parámetros)

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL