C : unsigned short négatif

Bonjour

j’utilise la fonction void * mmap(…)
que je cast en data = (unsigned short *)mmap
Et dans la doc en cas d’erreur ca peut renvoyer -1 alors je me suis dis mince ca va pas marcher avec un unsigned short, mais en fait si, en faisant le test if (data == -1), je detecte bien les erreurs, et en faisant un printf de data j’ai bien -1 en cas d’erreur…
Pourquoi ? et est ce que c’est mauvais de le faire quand meme?

merci

hum.

C’est tout à fait normal:

if (data == -1)

-> data : unsigned short*, soit un pointeur sur un unsigned short.

Utilise MAP_FAILED plutôt (cf. www.opengroup.org… )

oui j’utilise bien MAP_FAILED, mais je disais -1 dans ce post pour simplifier car la question portait sur le fait qu’un unsigned short soit négatif.

merci

Ouaip. Donc en fait, non. Ce n’est jamais négatif : ça vaut -1 ou NULL je suppose (mais toutes les fonctions systèmes renvoient bêtement -1).

C’est juste que tu testes le pointeur, et non sa valeur.