我在文件 add.cpp 中定义了一个名为add
的c ++函数(下面是 add.cpp 的内容):
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double add(double a, double b) {
return a + b;
}
我在 multiplyandadd.cpp 文件(下面的 multiplyandadd.cpp 的内容)中定义了另一个名为multiplyandadd
的c ++函数,该函数调用add
函数从上面:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double multiplyandadd(double a, double b, double c) {
return c*add(a, b);
}
为了实现这一点,我发现我应该在我的包的子文件夹 / inst / include 中创建一个头文件 add.h 并定义function {{ 1}}在 add.h ...
中 add.h 的内容应该是什么?如何在 add.h 中定义此函数add
以便包编译?
我确信这是非常基本的,可能之前已经回答了很多次,并且有大量的例子记录得非常好......我只是在几个小时内找不到一个例子来阅读文档,stackoverflow答案,。 ..
答案 0 :(得分:1)
使用标题时,您需要使用inclusion guard。在包含守卫内,提供适当的功能定义。如果您的函数具有默认参数,请在头文件中包含默认参数 。
例如:
<强>安装/包含/ add.h 强>
<div class="ui right labeled top pointing floating icon button dropdown">
<i class="icon folder open"></i>
<span class="text" tabindex="0" role="menu">Menu</span>
<div class="menu">
<div class="item" (click)="onClickItem()" *ngFor="#m of menu">
<i class="icon sign in"></i>
{{m}}
</div>
</div>
</div>
<强>的src / add.cpp 强>
#ifndef PACKAGENAME_ADD_H
#define PACKAGENAME_ADD_H
double add(double a = 0.1, double b = 0.2);
#endif
<强>的src / multiplyandadd.cpp 强>
#include <Rcpp.h>
#include <add.h>
// [[Rcpp::export]]
double add(double a, double b) {
return a + b;
}
<强>的src / Makevars 强>
#include <Rcpp.h>
#include <add.h>
// [[Rcpp::export]]
double multiplyandadd(double a, double b, double c) {
return c*add(a, b);
}
答案 1 :(得分:0)
行。弄清楚......:)
add.h:
//add.h
#ifndef __ADD_H_INCLUDED__ // if add.h hasn't been included yet...
#define __ADD_H_INCLUDED__ // #define this so the compiler knows it has been included
double add(double a, double b);
#endif
而且,我需要src中的Makevars内容:
PKG_CXXFLAGS = -I../inst/include
我知道这是最基本的事情。在某个地方拥有这样一个基本的例子可以让人们第一次使用Rcpp更容易。