Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1694 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] posix_memalign, comment savoir si il est present....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] posix_memalign, comment savoir si il est present....

n°843687
GuiYom_00
Posté le 06-09-2004 à 20:36:34  profilanswer
 

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 :
  1. #if defined(_GNU_SOURCE)
  2.   /* ce que je veux faire dans ce cas */
  3. #endif
  4. #elif defined(_XOPEN_SOURCE)
  5.   #if (_XOPEN_SOURCE >= 600 )
  6.   /* ce que je veux faire dans ce cas */
  7.   #elif
  8.   /* ce que je veux faire dans ce cas */
  9.   #endif
  10. #else
  11. /* ce que je veux faire dans ce cas */
  12. #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

mood
Publicité
Posté le 06-09-2004 à 20:36:34  profilanswer
 

n°843701
Taz
bisounours-codeur
Posté le 06-09-2004 à 21:03:56  profilanswer
 

c'est à toi le définir. gcc -Dmachin

n°843704
GuiYom_00
Posté le 06-09-2004 à 21:07:34  profilanswer
 

ok merci...
mais dans ce cas pourquoi cela marche meme quand il est pas defini?
 
et n'y a t il pas un autre moyen car, si je fais un make en mettant gcc -Dmachin alors gcc pourrait toujours croire que posix_memalign existe et si il est pas present sur la machine => probleme lors du linkage mais bon tant pis, si il y a pas de moyen de le savoir alors je ferais avec...

n°843716
Taz
bisounours-codeur
Posté le 06-09-2004 à 21:23:13  profilanswer
 

non pas de problème au linkage. si tu dis à gcc de gueuler, s'il trouve pas cette fonction, ça compilera pas.
 
un moyen de savoir ? ben avec les autotools, ça ne fait rien d'autre que des tests avec de compiler le projet en entier/

n°843807
GuiYom_00
Posté le 06-09-2004 à 23:25:59  profilanswer
 

oki re thanks ;)
 
je vais me renseigner concernant les autotools et je vais aussi verifier que gcc gueule bien si il le faut :)

n°843841
Taz
bisounours-codeur
Posté le 07-09-2004 à 00:41:38  profilanswer
 

un truc genre 'ne pas fermer'


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] posix_memalign, comment savoir si il est present....

 

Sujets relatifs
[C#] Comment savoir quelle version du Framework l'app a besoin ?[C++/wxWidgets/MSW] Savoir si un fichier est système
Handle de shell avec posix thread[2D] comment savoir si un point est dans la surface d'un polygône ?
Savoir quel SubmitButton à été utilisé dans le OnSubmitComment savoir si un buffer a été compressé avec Gzip (Zlib) ?
net use si pc présentsavoir si une variable est définie en testant le début du nom[resolu]
[MySQL] tester si un champ est présentsavoir si une string ne contient que des chiffres
Plus de sujets relatifs à : [C] posix_memalign, comment savoir si il est present....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR