Siirry sisältöön

C/Standardikirjastot/stddef.h

Wikikirjastosta
#include <stddef.h>

Määrittelee neljä asiaa.

NULL

on makro, joka vastaa 'tyhjää' osoitinta. Sen arvo on yleensä joko 0, tai 0 muunnettuna tyypittömäksi osoittimeksi (((void*)0)).

size_t

on etumerkitön kokonaislukutietotyyppi. Tietotyyppien koon antava sizeof-operaattori palauttaa arvon, joka on tätä tyyppiä. Kaikki taulukoiden indeksit ovat esitettävissä tämän tietotyypin rajoissa.

ptrdiff_t

on etumerkillinen kokonaislukutietotyyppi. Kahden osoittimen erotus on tätä tietotyyppiä.

offsetof(tietue, nimi)

on makro, joka palauttaa size_t-tyyppiä olevan arvon. Jos annetulle tietuetyypillä (tai yhdistetyypillä) on nimen mukainen kenttä, paluuarvo on tietueen kentän osoittimen ja tietueen osoittimen erotus. Esimerkki:

struct tietue {
  int a;
  int b;
};
offsetof(struct tietue, a)       /* 0, sillä kenttä a on tietueessa ensimmäisenä */
offsetof(struct tietue, b)       /* sizeof(int), yleensä 4, sillä kenttää b edeltää yksi int. */

Erinäiset muut standardikirjaston otsikkotiedostot voivat myös määritellä NULL:n ja size_t:n samoin kuin stddef.h.

stddef.h on yksi harvoista otsikkotiedostoista, joka on saatavilla myös ns. irrallisessa (engl. freestanding) ympäristössä. Tämä tarkoittaa sitä, että otsikkotiedoston määritelmät ovat kääntäjän tiedossa heti jo ohjelmaa kääntäessä, eikä se sisällä funktioita tai muuttujia. Irrallisia ympäristöjä ovat sellaiset, joissa ei ole saatavilla suoritettavaa C-standardikirjaston toteutusta.