在R中,使用Rcpp访问C ++代码,而不将所有C ++代码放在一个文件中,如何控制编译时文件的使用顺序。
假设我有两种方法,methodPrimary
和methodSecondary
,我想将每种方法放在单独的文件methodPrimary.cpp
和methodSecondary.cpp
上,但是请说函数{{1使用函数methodPrimary
,如下所示:
methodSecodary.cpp
methodSecondary
methodPrimary.cpp
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int methodSecondary(int i){
return(i);
}
我收到一个错误,说#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int methodPrimary(int i){
return 2*methodSecondary(i);
}
未在此范围内声明,这是可以理解的,因为在这两个文件中的每个文件中都没有引用另一个文件。分别。
我最初的假设是Rcpp编译器会处理所有这些以及包构造和methodSecondary
字段的使用,看似不是这样。
所以我的问题是,以正确的顺序编译/处理/声明所有文件的正确过程是什么?
答案 0 :(得分:2)
编译顺序无关紧要。但是每个函数必须在编译器接受它之前声明。
创建一个头文件,声明所有函数,并将其包含在每个C
源文件中。
methods.h
:
extern int methodPrimary(int);
extern int methodSecondary(int);
在每个C
源文件中,在使用函数之前:
#include "methods.h"
您可以使用多个头文件,以便methodSecondary.h
声明该功能。