为什么我们都“包括”和“依赖”RcppArmadillo?

时间:2018-03-15 22:47:45

标签: r rcpp

要使用RcppArmadillo,我们经常被要求在顶部插入以下内容:

#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]

为什么我们需要两者? #include指令不足以让我们访问RcppArmadillo范围内定义的所有函数吗?

1 个答案:

答案 0 :(得分:5)

有两种不同的东西在起作用:

  1. 编译器需要标题RcppArmadillo.h才能知道来自(Rcpp)Armadillo,Rcpp的类型(因为这个也拉入Rcpp.h)因此R.我认为你认识你需要这个。但是......

  2. R如何知道添加此标题所需的-I...标志?它不会!

  3. 程序包级别LinkingTo:有助于标题大小写。但在更深层次的意义上,有时我们需要标题链接(即RcppGSL),在这种情况下,我们通过Rcpp::depends将这里的钩子转换为Rcpp属性确保我们可以做到这一点。

    因此// [[Rcpp::depends(RcppArmadillo)]]有助于sourceCpp()使用。包装中不需要它。 &#34;插件&#34;像这样在Rcpp Attributes插图中稍微讨论一下。