Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
"operation": osäker konvertering från "type_of_expression" till "type_required"
Om du gör ett funktionsanrop med hjälp av den resulterande pekaren kan programmet misslyckas
Anmärkningar
Flera åtgärder som rör funktionspekare anses vara osäkra:
Funktionstyper med olika anropskonventioner.
Funktionstyper med olika returkonventioner.
Argument- eller returtyper med olika storlekar, typkategorier eller klassificeringar.
Skillnader i argumentlistans längd (på
__cdecl, endast vid typomvandling från en längre lista till en kortare lista, även om den kortare är varargs).Pekare till data (förutom
void*) som är aliaserad mot en funktionspekare.Alla andra typer av skillnader som skulle ge ett fel eller en varning på en
reinterpret_cast.
Om du anropar den här funktionen via resultatpekaren kan programmet krascha.
Den här varningen är inaktiverad som standard. Mer information finns i Kompilatorvarningar som är inaktiverade som standard.
Example
I följande exempel genereras C4191:
// C4191.cpp
// compile with: /W3 /clr
#pragma warning(default: 4191)
void __clrcall f1() { }
void __cdecl f2() { }
typedef void (__clrcall * fnptr1)();
typedef void (__cdecl * fnptr2)();
int main() {
fnptr1 fp1 = static_cast<fnptr1>(&f1);
fnptr2 fp2 = (fnptr2) &f2;
fnptr1 fp3 = (fnptr1) &f2; // C4191
fnptr2 fp4 = (fnptr2) &f1; // C4191
}