Bonjour a tous,
Voila j'ai un code qui peut tourner sur plusieurs machines (toutes sous unix/linux avec des versions de linux differentes ) et j'ai besoin de savoir si la fonction posix_memalign est disponible...
Donc pour cela je me suis dit je vais faire un man posix_memalign et la je remarque les indications suivantes qui me semblent repondre a ma question
SYNOPSIS
#define _XOPEN_SOURCE 600
#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
et a la fin
Everybody agrees that posix_memalign() is declared in <stdlib.h>. In order to declare it, glibc needs _GNU_SOURCE defined, or _XOPEN_SOURCE defined to a value not less than 600.
Donc dans mon code j'ai rajouté
Code :
- #if defined(_GNU_SOURCE)
- /* ce que je veux faire dans ce cas */
- #endif
- #elif defined(_XOPEN_SOURCE)
- #if (_XOPEN_SOURCE >= 600 )
- /* ce que je veux faire dans ce cas */
- #elif
- /* ce que je veux faire dans ce cas */
- #endif
- #else
- /* ce que je veux faire dans ce cas */
- #endif
|
or il se trouves que la compilation avec gcc me sorts que ni _GNU_SOURCE ni _XOPEN_SOURCE ne sont definis (je le vois en faisant un gcc -E -dM )et pourtant si dans le code je fais un appel a posix_memalign la fonction est bien reconnue et marche nickel...
donc voila je voudrais savoir d'ou cela peut venir, sachant que en regardant dans stdlib.h je n'ai pas vu d'autre "moyen" qui permettent de definir posix_memalign ...
merci d'avance
GuiYom