gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:25:22 24 4
gpt4 key购买 nike

我正在尝试向 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com