Rcpp函数没有参数

时间:2016-07-30 15:02:10

标签: c++ r rcpp

我正在使用Rcpp开发一个R包,现在我试图在没有输入参数的情况下包含以下c ++函数:

int printVariables() {
    // Code
    return 0;
}

我的RcppExports.cpp中有下一个功能:

int printVariables();
RcppExport SEXP printVariables() {
BEGIN_RCPP
    Rcpp::RObject __result;
    Rcpp::RNGScope __rngScope;
    __result = Rcpp::wrap(printVariables());
    return __result;
END_RCPP
}

最后,在RcppExports.R中,我有一个条目如下:

printVariables <- function() {
    .Call('printVariables', PACKAGE = 'my_package')
}

编译代码时出现此错误:

RcppExports.cpp: In function ‘SEXPREC* printVariables()’:
RcppExports.cpp:54:37: error: ambiguating new declaration of ‘SEXPREC* printVariables()’
 RcppExport SEXP printVariables() {
RcppExports.cpp:53:5: note: old declaration ‘int printVariables()’
 int printVariables();

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在那里放置一个被忽略的参数。返回类型void有效,但您必须至少有一个您可以忽略的参数。

R> cppFunction("void foo(int ignored=0) { double d; }")
R> foo()
R> 

有关所有光荣的详细信息,请参阅Rcpp Attributes vignette

编辑我确实站了起来,感谢@hrbrmstr,他正确地指出这个当然在包中工作。即甚至当被要求做文件时由RStudio创建的样本函数 - &gt;新项目 - &gt;新目录 - &gt; R Package,当选择'package w / Rcpp'时:

// [[Rcpp::export]]
List rcpp_hello() {
  CharacterVector x = CharacterVector::create("foo", "bar");
  NumericVector y   = NumericVector::create(0.0, 1.0);
  List z            = List::create(x, y);
  return z;
}

显然是 sans 参数。