[Rd] printf capture

Simon Urbanek simon.urbanek at r-project.org
Thu Apr 19 20:17:56 CEST 2007


On Apr 19, 2007, at 10:31 AM, mel wrote:

> Prof Brian Ripley a écrit :
>
>> You can always link in a wrapper that defined printf and passes  
>> the arguments to Rprintf.
>
> I apologize but confess i didn't completely understand this  
> suggestion.
>

The wrapper:

#include <R.h>

int printf(const char *format, ...) {
   va_list (ap);
   va_start(ap, format);
   Rvprintf((char*)format, ap);
   va_end(ap);
   return 0;
}

If you link this in your project (simply create a separate object  
file with this), the project will be using Rprintf via this wrapper  
instead of printf from libc. Note that you shouldn't be relying on  
the return value literally, otherwise you're in trouble ;).

Cheers,
Simon

>> It's documented in 'Writing R Extensions'.
>>   The defines used for compatibility with @Sl{} sometimes causes
>>   conflicts (notably with Windows headers), and the known
>>   problematic defines can be removed by defining @code 
>> {STRICT_R_HEADERS}.
>
> Yes, i added
> #define STRICT_R_HEADERS
> in my cpp code, and the redefinition warning vanishes indeed.
>
> Many thanks for your precise tips and my apologies for the late  
> answer.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>



More information about the R-devel mailing list