2016-07-25 29 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

謝謝。這解決了它! –