errno.h

errno.h är en rubrikfil i standardbiblioteket för programmeringsspråket C. Den definierar makron för rapportering och hämtning av feltillstånd med hjälp av symbolen errno (förkortning av "felnummer").

errno fungerar som en heltalsvariabel. Ett värde (felnumret) lagras i errno av vissa biblioteksfunktioner när de upptäcker fel. Vid programstart är det lagrade värdet noll. Biblioteksfunktioner lagrar endast värden större än noll. Alla biblioteksfunktioner kan ändra värdet som lagrats före retur, oavsett om de upptäcker fel eller inte. De flesta funktioner indikerar att de upptäckt ett fel genom att returnera ett speciellt värde, vanligtvis NULL för funktioner som returnerar pekare och -1 för funktioner som returnerar heltal. Några funktioner kräver att den som ringer förinställer errno till noll och testar det efteråt för att se om ett fel upptäckts.

Errno - makrot expanderar till ett lvärde med typen int , ibland med externa och/eller flyktiga typspecifikationer beroende på plattformen. Ursprungligen var detta en statisk minnesplats, men makron används nästan alltid idag för att möjliggöra flertrådning, så att varje tråd kommer att se sitt eget trådlokala felnummer.

Rubrikfilen definierar också makron som expanderar till heltalskonstanter som representerar felkoderna. C -standardbiblioteket kräver bara tre för att definieras:

EDOM

Resultat från en parameter utanför en funktions domän, t.ex. sqrt ( -1 )

ERANGE

Resultat från ett resultat utanför en funktions intervall, t.ex. 0 strtol ( "0xffffffffff" , NULL , ) på system med en 32-bitars bred lång

EILSEQ (krävs sedan 1994, tillägg 1 till C89-standarden)

Resultat från en olaglig bytesekvens, t.ex. mbstowcs ( buf , " \xff " , 1 ) på system som använder UTF-8 .

POSIX- kompatibla operativsystem som AIX , Linux eller Solaris inkluderar många andra felvärden, av vilka många används mycket oftare än de ovanstående, som EACCES för när en fil inte kan öppnas för läsning. C++11 definierar dessutom många av samma värden som finns i POSIX-specifikationen.

Traditionellt listar den första sidan i Unix systemmanualer , som heter intro(2), alla errno.h-makron, men detta är inte fallet med Linux , där dessa makron istället listas i errno(3).

Ett errno kan översättas till en beskrivande sträng med hjälp av strerror (definierad i string.h ) eller en BSD-tillägg som kallas sys_errlist . Översättningen kan skrivas ut direkt till standardfelströmmen med hjälp av perror (definierad i stdio.h ). Eftersom strerror i många Unix-liknande system inte är trådsäkert används en trådsäker version strerror_r , men motstridiga definitioner från POSIX och GNU gör den ännu mindre portabel än sys_errlist -tabellen.

Se även

Bibliografi

externa länkar