c++ - R 检查不喜欢 std :cout (C++)

标签 c++ r

我正在尝试向 CRAN 提交一个包含 C++ 代码的包(我对 C++ 一无所知,cpp 文件是由其他人编写的)。

R 检查提示 'std::cout' (C++) 编译后的代码不应调用可能终止 R 的入口点或 写入 stdout/stderr 而不是控制台,也不是 C RNG

我在代码中发现了以下命令:

 integrate_const(stepper_type( default_error_checker< double >( abs_error , rel_error ) ),
                mDifEqn,
                x,
                0.0,
                (precipitationLength * timeStep), 
                timeStep,
                streaming_observer(std::cout) ); 

我想 R (CRAN) 期望的是其他东西而不是 std::cout...但是什么?

最佳答案

您的 C++ 项目很可能正在使用标准输入和输出。

正如 Writing R Extensions 手册中所讨论的,问题是您最终会混合两个输出系统:R 和 C++ 输出系统。

因此,“鼓励”您替换所有用法,例如,

 std::cout << "The value of foo is " << foo << std::endl;

用类似的东西

 Rprintf("The value of foo is %f\n", foo);

这样您的输出就可以与 R 正确混合。在我的一个(非 Rcpp)包中,我不得不为此做很多繁琐的修补......

现在,正如@vasicbre 的评论和@Dason 的回答中提到的,如果你使用 Rcpp,你可以简单地做

 Rcpp::Rcout << "The value of foo is " << foo << std::endl;

如果您已经在使用 Rcpp,这很容易,否则您需要决定是否值得添加 Rcpp...

编辑:修复了 Rcpp::Rcout 中的拼写错误。

关于c++ - R 检查不喜欢 std :cout (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004717/

相关文章:

c++ - Eclipse Ubuntu 中的 “Program is not a recognized executable” 错误

r - 填满一张纸的两个正方形图

r - 在给定的 react 中,是否有方法/选项来获取触发它的 react 元素?

regex - 我可以使用 OR 语句来指示 stringr 的 str_extract_all 函数中的模式吗?

从嵌套数据框/小标题运行多个简单线性回归

c++ - 转发成员函数到静态方法

c++ - 隐写术 : Encoded audio and video file not being played, 已损坏。什么问题

c++ - 作为成员函数的operator[] 的正确模板参数/参数是什么?

c++ - malloc 和 free 是如何实现的?

r - 当列表中有向量时,如何将列表列转变为普通列,只留下最后一个值?