2

我长期以来一直使用 Rcpp 和 Rstudio,但最近我失去了自动完成和诊断功能。

我能够将原因追溯到 RcppArmadillow。

这是带有修改的基本默认 c++ 新文件代码。

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

// [[Rcpp::export]]
NumericVector timesTwo(NumericVector x) {
  return x * 2;
}

// [[Rcpp::export]]
double GetValueAt(const NumericMatrix& x, int row = 1, int col = 1) {
  return x(row-1,col-1);
}

/*** R
timesTwo(42)
GetValueAt(as.matrix(42),1,1)
*/

此代码工作并正确执行。// [[Rcpp::depends(RcppArmadillo)]]即使它需要被注释掉并且如果它被删除或双重注释,代码在引用时也会失败x(row-1,col-1);

我正在使用.rs.setClangDiagnostics(2)clang 诊断程序,运行代码时出现以下错误:

error: OpenMP support and version of OpenMP (31, 40 or 45) was disabled in PCH file but is currently enabled

似乎这个错误是完成失败的原因。

这个之前网上有人问过, 比如这里:https ://community.rstudio.com/t/rstudio-does-not-display-correct-c-diagnostics-libclang-error/26439,https://community.rstudio .com/t/rcpparmadillo-code-completion/41736 https://github.com/rstudio/rstudio/issues/4685

但看起来他们中的任何一个都没有我可以复制的解决方案。我不知道如何更改 PCH 文件设置或其他方式。

我正在使用 Windows 7 64 位。R 3.5.3,Rstudio 1.2.5033,带有 Rtools 3.5 编译器,RcppArmadillo 0.9.850.1.0,除 R 本身外,所有最近更新。

代码补全仅适用于 Rcpp 而没有 Armadillo,但基本的 NumericMatrix 功能会丢失。我想要一些方法来完成,或者用犰狳,或者让我的代码用 Rcpp 而不是犰狳编译。谢谢你。

4

0 回答 0