[Rd] compile fails with x86_64-alpine-linux-uclibc-gcc

Simon Urbanek simon.urbanek at r-project.org
Tue Aug 14 14:18:25 CEST 2012


Ouch - typo, misread ...

Sent from my iPhone

On Aug 14, 2012, at 7:48 AM, peter dalgaard <pdalgd at gmail.com> wrote:

> 
> On Aug 13, 2012, at 20:22 , nobody wrote:
> 
>> On Mon, Aug 13, 2012 at 10:49:26AM -0400, Simon Urbanek wrote:
>>> I suspect that your runtime/libc is defining fgetc as a macro which breaks any code that uses it as an identifier. Ideally, your runtime should be fixed to use a proper function, but you could probably work around it with something like
>>> 
>>> static char * fix_fgets(char *s, int n, FILE *stream) { return fgets(s, n, stream); }
>>> #undef fgets
>>> static char * fgets(char *s, int n, FILE *stream) { return fix_fgets(s, n, stream); }
>>> 
>>> Cheers,
>>> Simon
>> 
>> like this? :http://bpaste.net/show/40047/
>> if so, then i get this err msg:
>> connections.c:385:15: error: static declaration of 'fgets' follows non-static declaration
>> /usr/include/stdio.h:544:14: note: previous declaration of 'fgets' was here
>> connections.c: In function 'Rconn_fgetc':
>> connections.c:3192:11: error: expected identifier before '(' token
>> connections.c:3194:15: error: expected identifier before '(' token
>> 
>> and here is how it's declared in stdio.h on my system:
>> 
>> /* Get a newline-terminated string of finite length from STREAM.
>> 
>>  This function is a possible cancellation point and therefore not
>>  marked with __THROW.  */
>> extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
>>    __wur;
> 
> 
> Perhaps I'm confused, but how did either of you expect to fix a problem with fgetc by modifying fgets???
> 
> -- 
> Peter Dalgaard, Professor
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
> 
> 



More information about the R-devel mailing list