C/Visual C - pragma once

 
Vista:

pragma once

Publicado por Carlos (43 intervenciones) el 17/09/2005 10:33:37
Pues eso, jeje, mi pregunta es bastante simple,
En VC++ .NET, para que se usa #pragma once ?
Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pragma once

Publicado por fernando.gomez (1603 intervenciones) el 19/09/2005 03:22:20
Supongamos el siguiente ejemplo. Tienes dos archivos .h, file1.h y file2.h, y un archivo cepepé, file.cpp. El file1.h luce algo como:

class Clase1 { ... };

El file2.h luce como:

#include "file1.h"

class Clase2 { ... }; //se entiende que Clase2 hace uso de Clase1...

Y finalmente, el cepepé luce como:

#include "file1.h"
#include "file2.h"

// lo demás ya no nos importa.

Evidentemente, el siguiente mandaría un mensaje de error, ya que a file1.h se le está haciendo un doble include, y por ende en el cepepé tendríamos los mismos símbolos definidos dos veces. Pues bien, el #pragma once lo que hace es que le dice al compilador que si un archivo --digamos file1.h-- ya fué incluído, no lo vuelva a incluir una segunda ocasión. Así, el problemo del ejemplo se resuelve si file1.h luciese como:

#pragma once

class Clase1{ ... };

El estándar de C++ define la existencia de directivas #pragma como directivas definidas por el compilador, y estas no son estándares, por lo que si intentas compilar este código con algún otro compilador que no sea VC, quizás te salga un error de que no reconoce el #pragma once. Pero si esto no te importa (todo tu proyecto lo harás siempre con VC), es realmente una muy buena idea el emplear un #pragma once en todos tus .h.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar