Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Messaggio di errore
Osservazioni:
L'errore C2338 può essere causato da un static_assert errore durante la compilazione. Il messaggio viene fornito dai static_assert parametri.
L'errore C2338 può essere generato anche da provider esterni al compilatore. Nella maggior parte dei casi, questi errori vengono segnalati da una DLL del provider di attributi, ad esempio ATLPROV. Alcune forme comuni di questo messaggio includono:
Provider di attributi Atl 'attribute': messaggio di errore numero ATL
Utilizzo errato dell'attributo 'attribute'
'usage': formato non corretto per l'attributo 'usage'
Questi errori sono spesso irreversibili e possono essere seguiti da un errore irreversibile del compilatore.
Per risolvere questi problemi, correggere l'utilizzo dell'attributo. In alcuni casi, ad esempio, i parametri degli attributi devono essere dichiarati prima che possano essere usati. Se viene specificato un numero di errore ATL, controllare la documentazione relativa a tale errore per informazioni più specifiche.
Example
In C++11 standard e versioni successive le constexpr funzioni non vengono più considerate noexcept per impostazione predefinita se usate in un'espressione costante. Questa modifica del comportamento deriva dalla risoluzione di Core Working Group (CWG) CWG 1351 ed è abilitata in /permissive- modalità . L'esempio seguente viene compilato in Visual Studio 2019 versione 16.1 e precedenti, ma produce C2338 in Visual Studio 2019 versione 16.2:
// c2338.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338.cpp
constexpr int f() { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept"); // C2338 in 16.2
}
Per correggere l'errore, aggiungere l'espressione noexcept alla dichiarazione di funzione:
// c2338_fixed.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338_fixed.cpp
constexpr int f() noexcept { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept");
}