Skip to content

"Use of ‘.C’ for C++ is now deprecated and will be removed in R 2.12.0"

3 messages · Florian Breitwieser, Brian Ripley, Yi (Alice) Wang

#
Hi,

I am writing a R package and having a bit of trouble to have the C++
code working.

I was planing using the .C interface function, however I found the
comment (Use of ?.C? for C++ is now deprecated and will be removed in
R 2.12.0.) in the R-exts manual.

So this interface function should not be used anymore - .Call() or
Rcpp instead? What is the reason for the deprecation?

Thanks,
Florian
#
Please don't pick things out of context.  It does not say .C() is 
deprecated and it is not talking about R code: it says

There are default variables and rules for this (determined when R is 
configured and recorded in R_HOME/etcR_ARCH/Makeconf), providing 
support for C, C++, FORTRAN 77, Fortran 9x, Objective C and Objective 
C++ with associated extensions .c, .cc  or .cpp, .f, .f90 or .f95, 
.m, and .mm or .M, respectively. We recommend using .h  for headers, 
also for C++ or Fortran 9x include files. (Use of .C for C++ is now 
deprecated and will be removed in R 2.12.0.)

You missed 'associated extensions', and that the NEWS file says

     o	Use of file extension .C for C++ code in packages is now
 	deprecated: it has caused problems for some 'make's on
 	case-insensitive file systems (although it currently works
 	with the recommended toolkits).
On Wed, 21 Jul 2010, Florian Breitwieser wrote: