2016-07-25 41 views
1

当试图编译RCPP 12.6 G ++ 4.8.4,我得到了以下错误消息:无法编译RCPP 0.12.6下[R

error: expected initializer before ‘stop’

inline void noret stop(const std::string& message)

似乎无法找到对任何事情属性NORET

+0

它可能是[[noreturn]]属性(或它的一些旧版本)的宏http://en.cppreference.com/w/cpp/language/attributes我想你会需要一个更新的g ++ –

+0

关闭。它是一个缺失的R的更新版本,它在其头文件中定义了它。我们没有检查这个,现在自己定义,如果'#ifndef NORET'。编译器很好。 –

+0

要添加更多的牛肉:R-devel(又名R 3.4。*),R-release(现在又名R 3.3.1)和R-oldrel(又名R 3.2.5)都有效。但是如果你回到R 3.1。*或者更旧的版本,它就会失败。 –

回答

5

NORET宏由R定义 - 但仅限于R的最新版本。由于我们(和CRAN)执行了所有测试并使用最新版本进行构建,因此滑行。

此问题已被报告为issue #512(以及在#516中也是如此)。它已经在主分支以及临时版本0.12.6.1中解决,您可以从Rcpp drat存储库中获得该版本。

否则,只需添加(空)#define NORET或更好的是,更新您的R版本。

+0

谢谢。这解决了它! –