Todos mis archivos de cabecera utilizar incluyen guardias así como pragma una vez:¿"#pragma una vez" tiene el potencial de causar errores?
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
entiendo que pragma una vez no es estándar y puede no ser los mismos compiladores de todo, pero ¿hay alguna posibilidad de que cause y error? ¿Sería mejor probar de alguna manera si está disponible primero?
#ifdef THIS_COMPILER_SUPPORTS_PRAGMA_ONCE
#pragma once
#endif
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
quiero proveer pragma una vez como una opción a la posibilidad de acelerar la compilación y evitar nombre-choque, sin dejar de ofrecer compatibilidad a través de compiladores.
Realmente no sé C/C++, pero [este artículo de MSDN] (http://msdn.microsoft.com/en-us/library/d9x1s805%28v=vs.71%29.aspx) parece sugerir que los ignorados son ignorados. – Ryan
posible duplicado de [¿Es #pragma una vez seguro incluir guardia?] (Http://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard) –
Ver también [¿Por qué no es seguro? #pragma de C/C++ una vez un estándar ISO?] (Http://stackoverflow.com/questions/1695807/why-isnt-c-cs-pragma-once-an-iso-standard) –