Wszystkie moje pliki nagłówka używać obejmują strażników jak pragmy raz:Czy "#pragma once" może potencjalnie powodować błędy?
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Rozumiem, że pragma raz nie jest standardem i nie mogą być takie same w całej kompilatorów, ale jest jakiś szansa, że to spowoduje i błąd? Czy lepiej jakoś przetestować, czy jest on dostępny jako pierwszy?
#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 */
Chcę zapewnić pragmy raz jako opcja do kompilacji możliwie szybkiego i uniknąć imienin zderzeniu, zapewniając jednocześnie zgodność całej kompilatorów.
ja naprawdę nie wiem, C/C++, ale [ten artykuł MSDN] (http://msdn.microsoft.com/en-us/library/d9x1s805%28v=vs.71%29.aspx) wydaje się sugerować, że nierozpoznane są ignorowane. – Ryan
możliwy duplikat [Czy #pragma raz bezpieczny zawiera strażnik?] (Http://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard) –
Zobacz także [Dlaczego nie #pragma C/C++ raz standard ISO?] (Http://stackoverflow.com/questions/1695807/why-isnt-c-cs-pragma-once-an-iso-standard) –