Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De flesta funktioner finns i bibliotek, men vissa funktioner är inbyggda i kompilatorn (dvs. inbyggda). Dessa kallas för inbyggda funktioner eller inbyggda funktioner.
Anmärkningar
Om en funktion är en inbyggd funktion infogas koden för den funktionen vanligtvis infogad, vilket undviker omkostnaderna för ett funktionsanrop och tillåter att mycket effektiva datorinstruktioner genereras för den funktionen. En inbyggd är ofta snabbare än motsvarande infogade sammansättning, eftersom optimeraren har en inbyggd kunskap om hur många inbyggda funktioner som beter sig, så vissa optimeringar kan vara tillgängliga som inte är tillgängliga när infogad sammansättning används. Optimeraren kan också expandera det inbyggda på olika sätt, justera buffertar på olika sätt eller göra andra justeringar beroende på kontexten och argumenten för anropet.
Användningen av inbyggda funktioner påverkar kodens portabilitet, eftersom inbyggda objekt som är tillgängliga i Microsoft C++ kanske inte är tillgängliga om koden kompileras med andra kompilatorer och vissa inbyggda funktioner som kan vara tillgängliga för vissa målarkitekturer inte är tillgängliga för alla arkitekturer. Inbyggda objekt är dock vanligtvis mer portabla än infogade sammansättningar. De inbyggda funktionerna krävs i 64-bitarsarkitekturer där infogad sammansättning inte stöds.
Vissa inbyggda funktioner, till exempel __assume och __ReadWriteBarrier, ger information till kompilatorn, vilket påverkar optimerarens beteende.
Vissa inbyggda funktioner är endast tillgängliga som inbyggda, och vissa är tillgängliga både i funktions- och inbyggda implementeringar. Du kan instruera kompilatorn att använda den inbyggda implementeringen på ett av två sätt, beroende på om du bara vill aktivera specifika funktioner eller om du vill aktivera alla inbyggda funktioner. Det första sättet är att använda #pragma intrinsic(intrinsic-function-name-list). Pragma kan användas för att ange en enda inbyggd eller flera inbyggda som avgränsas med kommatecken. Den andra är att använda kompilatoralternativet /Oi (Generera inbyggda funktioner), vilket gör alla inbyggda på en viss plattform tillgängliga. Under /Oi använder du #pragma function(listan intrinsic-function-name-list) för att framtvinga att ett funktionsanrop används i stället för ett inbyggt. Om dokumentationen för en specifik inbyggda information om att rutinen endast är tillgänglig som en inbyggd, används den inbyggda implementeringen oavsett om /Oi eller #pragma intrinsic anges. I samtliga fall/ Oi eller #pragma intrinsic tillåter, men tvingar inte, optimeraren att använda den inbyggda. Optimeraren kan fortfarande anropa funktionen.
Vissa C/C++-standardbiblioteksfunktioner är tillgängliga i inbyggda implementeringar i vissa arkitekturer. När du anropar en CRT-funktion används den inbyggda implementeringen om /Oi anges på kommandoraden.
Det finns en rubrikfil, <intrin.h>, som deklarerar prototyper för de vanliga inbyggda funktionerna. Tillverkarspecifika inbyggda egenskaper finns i huvudfilerna <immintrin.h> och <ammintrin.h> . Dessutom deklarerar vissa Windows-huvuden funktioner som mappas till en inbyggd kompilator.
I följande avsnitt visas alla inbyggda funktioner som är tillgängliga i olika arkitekturer. Mer information om hur de inbyggda funktionerna fungerar för din specifika målprocessor finns i tillverkarens referensdokumentation.
Se även
ARM-monteringsreferens
Referens för Microsoft Macro Assembler
nyckelord
Referens för C-körningsbibliotek