2016-07-25 2 views
1

При попытке компиляции Rcpp 12,6 с г ++ 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 (aka R 3.2.5) все работают. Но если вы вернетесь к R 3.1. * Или старше, это не сработало. –

ответ

5

Макрос NORET определяется R - но только в последних версиях R. Поскольку мы (и CRAN) выполняем все наши тесты и строим последние версии, это ускользает.

Вопрос уже представлен как issue #512 (а также в #516). Он уже рассмотрен в основной ветке, а также в промежуточной версии 0.12.6.1, которую вы можете получить из репозитория Rcpp drat.

В противном случае просто добавьте (0) #define NORET или, еще лучше, обновите свою версию R.

+0

Спасибо. Это исправило это! –