首页 > 解决方案 > 我可以在 rcpp 来源的 C++ 函数中使用 fprintf 吗?

问题描述

我在网上找到了一些我想在 R 项目中使用的代码。我设法编译并调用一切

libary(Rcpp)
sourceCpp("rcpp/my_function.cpp")
my_function("testdata.dat", "testout.dat", opt_verbose = 1)

函数中有几个 fprintf 调用,例如

fprintf(stderr, "Error: minvotes < 0!\n%s", usage);

但是它们不会打印到 R 控制台。有没有办法查看fprintf使用该功能时的输出?

标签: rrcpp

解决方案


一些东西:

a)这在任何标准终端的标准 R 会话中都可以正常工作:

> Rcpp::cppFunction("void printDemo() { fprintf(stderr, \"hello, world\\n\"); }")
> printDemo()
hello, world
> 

请注意,我必须转义引号和反斜杠才能与cppFunction(). 因此,如果这对您不起作用,则您的终端/显示器有问题。你用的是哪个?

b) 但是您不应该使用它——而编写 R 扩展对此非常清楚。

c)这就是为什么我们主要使用包装器 Rcpp::Rcout并根据编写 R 扩展Rcpp::Rcerr的要求重定向到 R 自己的缓冲输入/输出。


推荐阅读