Внутренние обратные вызовы

Я пытаюсь установить некоторые обратные вызовы RInside, но понимаю, что существует определение переменной RINSIDE_CALLBACKS, которая предотвращает компиляцию функции, вызывающей ошибку компоновщика.

 void RInside::set_callbacks(Callbacks* callbacks_)

как установить rinside и принудительно выполнить компиляцию с определенным RINSIDE_CALLBACKS?

заранее спасибо


person chatzich    schedule 31.05.2013    source источник


Ответы (1)


Я не уверен, насколько хорошо вы знаете C/C++, но идиома, используемая в RInside.cpp

RInside::RInside()
#ifdef RINSIDE_CALLBACKS
    : callbacks(0)
#endif
{
    initialize(0, 0, false, false, false);
}

использование такого ifdef обычно зависит от сделанного определения либо в качестве опции компилятора (например, -Dfoo будет определять foo), либо в заголовочном файле. Что мы и делаем здесь, в RInsideConfig.h :

// uncomment to turn on the experimental callbacks
// #define RINSIDE_CALLBACKS

Обратите внимание на комментарий об экспериментальном и поймите, что вы включите «невыпущенный» и неподдерживаемый код. Если у вас есть время поработать над этим, отлично. Если нет, ну...

person Dirk Eddelbuettel    schedule 01.06.2013
comment
Dirk Я знаю проблему, но RInside скомпилирован и установлен RStudio с параметрами, которые я не могу установить сам, есть ли способ вмешаться и добавить определение -DRINSIDE_CALLBACKS в параметры компиляции RStudio? - person chatzich; 01.06.2013
comment
Конечно вы можете задать параметры самостоятельно, это называется редактированием исходного файла... - person Dirk Eddelbuettel; 01.06.2013