kompilace C ++ kódu pomocí GNU / c getline () na Mac OS X?

hlasů
2

Snažím se sestavit již existující C ++ balíček na mém Mac OS X Leopard stroji a získat následující chybě:

    error: no odpovídající funkce pro volání 'getline (char **, size_t *, FILE * a)'

Je to pravděpodobně proto, že getline () je GNU konkrétní rozšíření.

Mohu nějak využít OSX Výchozí g ++ rozpoznat takové GNU konkrétní rozšíření?

(Pokud ne, mohl bych vždycky dodat svou vlastní implementaci nebo Gnus původní jednoho, ale já raději mít „čistší“ řešení, pokud je to možné)

Položena 12/07/2009 v 23:38
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
5

getlineje definován v stdio.hv glibc verze 2.10 a novější, ale ne v dřívějších verzích, ani (doposud; přidá 10,5 rozhodně neměl getlinea 10,7 rozhodně ano) v BSD odvozené libc.

Změna v knihovnách GNU přišlo z důvodu změny ve standardu POSIX 2008, který nyní obsahuje getline.

Lze předpokládat, že to bude jejich propagace na jiných libc v průběhu času. Do té doby, chápu, že to způsobuje problémy pro mnoho projektů.

Můžete si stáhnout samostatná verze z GNU .

Odpovězeno 13/07/2009 v 00:04
zdroj uživatelem

hlasů
1

Obecně platí, že řešením je použití autoconfnebo nějaký podobný nástroj k určení, zda současná platforma již má getline, nebo ne, a zadat vlastní definici jen v případě potřeby.

Příklad:

# 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)

nebo něco v tomto směru, budete muset upravit tak, aby odpovídaly svůj vlastní program.

Odpovězeno 13/07/2009 v 04:45
zdroj uživatelem

hlasů
0

Nejsem si jistý, co jsem kdy viděl, že konkrétní definice pojmu ‚getline‘ Zde je ten, vím, který používá C ++ proudy + řetězce.

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

Odpovězeno 13/07/2009 v 00:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more