Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Borito30 en 13 Febrero 2017, 19:51 pm



Título: pregunta sobre cabeceras c++ y un poco de windows
Publicado por: Borito30 en 13 Febrero 2017, 19:51 pm
En este caso mi cabecera se llamara resource.h y contendrá lo siguiente:
Código:
#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:
Código:
#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:
Código:
#define ELEXE "ELEXE"

Cuando hago esto
Código:
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.


Título: Re: pregunta sobre cabeceras c++ y un poco de windows
Publicado por: 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.


Título: Re: pregunta sobre cabeceras c++ y un poco de windows
Publicado por: Borito30 en 13 Febrero 2017, 21:39 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:
Código:
#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.


Título: Re: pregunta sobre cabeceras c++ y un poco de windows
Publicado por: dato000 en 13 Febrero 2017, 23:27 pm
Exactamente, es como una variable global, que se guarda en todo el tiempo de compilación y ejecución.


Título: Re: pregunta sobre cabeceras c++ y un poco de windows
Publicado por: class_OpenGL en 14 Febrero 2017, 09:05 am
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
  1. #define UN_DEFINE variable
  2.  
  3. int main() {
  4.   int UN_DEFINE;
  5.  
  6.   UN_DEFINE = 10;
  7.  
  8.   return 0;
  9. }

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

Código
  1. int main() {
  2.   int variable;
  3.  
  4.   variable = 10;
  5.  
  6.   return 0;
  7. }

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