comstackr du code c ++ en utilisant gnu / c getline () sur mac osx?

J’essaie de comstackr un package c ++ préexistant sur ma machine mac osx leopard et j’obtiens le message d’erreur suivant:

     erreur: pas de fonction correspondante pour l'appel à 'getline (char **, size_t *, FILE * &)'

Ceci est probablement dû au fait que getline () est une extension spécifique à GNU.

Puis-je faire en sorte que le compilateur osx default g ++ reconnaisse de telles extensions spécifiques à GNU?

(sinon, je pourrais toujours fournir ma propre implémentation ou celle de GNU, mais je préfère avoir une solution “plus propre” si possible)

getline est défini dans stdio.h dans la version 2.10 et ultérieure de la glibc, mais pas dans les versions précédentes, ni (jusqu’à présent; 10.5 ajouté n’avait définitivement pas getline , et 10.7 l’a certainement) dans libc dérivée de BSD.

La modification des bibliothèques GNU est due à une modification de la norme POSIX 2008, qui inclut désormais getline .

Vraisemblablement, cela se propagera à une autre bibliothèque au fil du temps. En attendant, je comprends que cela cause des problèmes pour beaucoup de projets.

Vous pouvez télécharger une version autonome de GNU .

Généralement, la solution consiste à utiliser autoconf ou un outil similaire pour déterminer si la plate-forme actuelle dispose déjà de getline ou non, et à ne fournir votre propre définition que lorsque cela est nécessaire.

Exemple:

 # configure.ac AC_CHECK_FUNCS([getline]) // compat.h #include "config.h" #ifndef HAVE_GETLINE ssize_t getline(char **lineptr, size_t *n, FILE *stream); #endif // getline.c ssize_t getline(char **lineptr, size_t *n, FILE *stream) { /* definition */ } # Makefile.am program_LDADD = $(if $(HAVE_GETLINE),,getline.o) 

ou quelque chose du genre, vous devrez l’ajuster pour correspondre à votre propre programme.

Je ne suis pas sûr d’avoir jamais vu cette définition spécifique de ‘getline’, celle que je connais et qui utilise des stream + c ++.

http://www.cplusplus.com/reference/ssortingng/getline/