我正在构建一个R包,并有一个要声明的常量wjtConstant。我希望为包创建的R函数和.cpp函数都可以访问此常量

对于R函数,我可以用一行创建一个.R文件:wjtConstant = 5并将此文件放在“R”文件夹中以进行软件包开发。

对于cpp函数,我可以将以下行放在“inst / include”文件夹中的头文件中:const int wjtConstant = 5;
我可以在两个地方都声明常量,并且结果可以按需工作(即,R和cpp函数都可以使用常量),但这有点草率。有什么方法可以声明一次常量,并且可以同时使用R函数和cpp函数吗?

最佳答案

您可以在R中使用 Activity 绑定(bind)来调用C++函数。像这样:

#include <Rcpp.h>
using namespace Rcpp ;

const int wjtConstant = 5;

// [[Rcpp::export]]
int get_wjtConstant(){ return wjtConstant ; }

在R中:
> makeActiveBinding("wjtConstant", get_wjtConstant, environment() )
> wjtConstant
[1] 5

这样,您可以在R和C++中直接使用wjtConstant

10-01 13:00