MAP_ANONYMOUS avec le standard C99

J’ai une application qui utilise l’appel système mmap. Je ne parvenais pas à la comstackr pendant des heures. Pourquoi obtenir MAP_ANON et MAP_ANONYMOUS étaient non déclarées? comstackz-le parfaitement, j’ai donc essayé de comstackr les bases et cela a fonctionné. J’ai constaté que cela échoue lorsque vous ajoutez -std = c99. Existe-t-il une raison spécifique pour laquelle MAP_ANON et MAP_ANONYMOUS ne sont pas valides dans la norme C99? Je sais qu’ils ne sont pas définis par POSIX mais par BSD SOURCE, je veux donc simplement savoir pourquoi.

Vous voulez probablement -std=gnu99 au lieu de -std=c99 . Le mode C99 désactive explicitement (la plupart) les extensions GNU.

J’ai écrit un test simple:

 #include  int a = MAP_ANONYMOUS; 

En mode C99, il ne trouve pas la valeur:

 $ gcc -std=c99 -c dc dc:3:9: error: 'MAP_ANONYMOUS' undeclared here (not in a function) 

Alors qu’en mode Gnu99, il fait:

 $ gcc -std=gnu99 -c dc