要使用 RcppArmadillo
,我们通常会被指示在顶部添加以下行:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
为什么我们需要两者? #include
指令是否足以让我们访问 RcppArmadillo
范围内定义的所有函数?
最佳答案
有两种不同的东西在起作用:
编译器需要 header
RcppArmadillo.h
才能了解 (Rcpp)Armadillo、Rcpp(因为这个也拉入 Rcpp.h)和 R 的类型。我想你知道你需要这个。但是……R 如何知道为此添加所需的
-I...
标志?不会的!
在包级别 LinkingTo:
有助于 header 大小写。但在更深层次的意义上,有时我们需要标题 和 链接(即 RcppGSL),在这种情况下,我们在这里通过 Rcpp::depends
进入 Rcpp 属性的钩子(Hook)确保我们可以做这个。
所以 //[[Rcpp::depends(RcppArmadillo)]]
有助于 sourceCpp()
使用。包中不需要它。像这样的“插件”在 Rcpp 属性小插图中进行了一些讨论。
关于r - 为什么我们在 RcppArmadillo 上同时使用 "include"和 "depends"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310460/