Tutti i miei file di intestazione uso includono guardie così come pragma volta:"#pragma una volta" può causare errori?
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Capisco che pragma volta non è standard e non può essere lo stesso compilatori tutto, ma non v'è alcun possibilità che causerà e errore? Sarebbe meglio testare in qualche modo se è disponibile prima?
#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 */
voglio fornire pragma volta come opzione per la compilazione possibilmente speed-up e di evitare nome-scontro, pur fornendo la compatibilità tra compilatori.
io non so davvero C/C++, ma [questo articolo di MSDN] (http://msdn.microsoft.com/en-us/library/d9x1s805%28v=vs.71%29.aspx) sembra suggerire che quelli non riconosciuti siano ignorati. – Ryan
possibile duplicato di [Is #pragma una volta un safe include guard?] (Http://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard) –
Vedi anche [Perché non è #pragma di C/C++ una volta uno standard ISO?] (Http://stackoverflow.com/questions/1695807/why-isnt-c-cs-pragma-once-an-iso-standard) –