MAP_ANON et MAP_ANONYMOUS non déclarés pour sys / mmap dans C

Ceci est mon fichier mman.h inclus dans /usr/include/sys/ :

http://pastebin.com/FZpHwKMC

En quelque sorte, mmap() semble être défini (et peut être utilisé avec les indicateurs 0 et la protection en lecture / écriture), mais pas MAP_ANON ou MAP_ANONYMOUS comme indiqué ci-dessous:

 #include  int a = MAP_ANON; /* comstack error */ int b = MAP_ANONYMOUS; /* also comstack error */ 

Je suis à court de ce qui pourrait être faux. Je comstack en utilisant ce makefile:

http://pastebin.com/R1V2edmf

EDIT: Il s’avère que la macro MAP_ANONYMOUS est définie dans /usr/include/bits/mman.h mais uniquement si __USE_MISC est défini …

Toute aide serait formidable!

Si vous utilisez GCC, la raison commune est que vous n’utilisez pas de norme GNU C. Essayez de comstackr avec, par exemple, -std=gnu11 , et voyez si cela résout le problème.

Vous trouverez plus d’informations sur les normes linguistiques de GCC ici .

GCC fournit également une liste très exhaustive des extensions qu’elles fournissent ici .

En outre, il est MAP_ANONYMOUS utiliser MAP_ANONYMOUS au lieu de MAP_ANON , car ce dernier est obsolète (selon man mmap ).