Контроль порядка компиляции в Rcpp

В R, используя Rcpp для доступа к коду C ++, не помещая весь код C ++ в один файл, как я могу контролировать порядок использования файлов при компиляции.

Допустим, у меня есть 2 метода, methodPrimary а также methodSecondaryЯ хочу поставить каждый метод на отдельные файлы methodPrimary.cpp а также methodSecondary.cpp, но давай скажем функцию methodPrimary использует функцию methodSecondary, как показано ниже:

methodSecodary.cpp

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int methodSecondary(int i){
return(i);
}

methodPrimary.cpp

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int methodPrimary(int i){
return 2*methodSecondary(i);
}

Я получаю сообщение об ошибке, говоря methodSecondary не заявлено в этой области, что понятно, поскольку в каждом из двух файлов нет ссылок на другие. соответственно.

Первоначально я предполагал, что компилятор Rcpp будет обрабатывать все это вместе с созданием пакета и использованием Collate поле, похоже, не тот случай.

Итак, мой вопрос: каков правильный процесс, чтобы все файлы были скомпилированы / обработаны / объявлены в правильном порядке?

1

Решение

Порядок компиляции не имеет значения. Но каждая функция должна быть объявлена ​​до того, как компилятор примет ее.

Создайте заголовочный файл, который объявляет все ваши функции, и включите его в каждый C исходный файл.

methods.h:

extern int methodPrimary(int);
extern int methodSecondary(int);

В каждом C Исходный файл, до использования функций:

#include "methods.h"

Вы можете использовать несколько заголовочных файлов, так что methodSecondary.h объявляет только эту функцию.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector