Где можно найти определения для этих двух функций. Grepping для их имени приносит только объявления, но я не могу найти их реализацию в исходном коде.Определения Rf_error и Rf_warning
ответ
Предположительно вы ищете определения функции кода C. То, что я обычно делаю при поиске определений, - это поиск по всем файлам для имени функции без Rf_
, но с типом возврата. Например, для Rf_error
я бы искал void error
. В этом случае вы довольно быстро получить (от src/main/[email protected], для R версии 3.2.2):
void error(const char *format, ...)
{
char buf[BUFSIZE];
RCNTXT *c = R_GlobalContext;
va_list(ap);
va_start(ap, format);
Rvsnprintf(buf, min(BUFSIZE, R_WarnLength), format, ap);
va_end(ap);
/* This can be called before R_GlobalContext is defined, so... */
/* If profiling is on, this can be a CTXT_BUILTIN */
if (c && (c->callflag & CTXT_BUILTIN)) c = c->nextcontext;
errorcall(c ? c->call : R_NilValue, "%s", buf);
}
Rf_warning
определяется в строке 262 того же файла.
Обратите внимание на следующие строки в src/include/R_ext/Error.h
#ifndef R_NO_REMAP
#define error Rf_error
#define warning Rf_warning
#endif
R_NO_REMAP
обычно не определен, так что означает, что макро error
расширяется до Rf_error
. Таким образом, в файлах, которые включают Error.h
, экземпляры error
будут заменены на препроцессор Rf_error
.
Итак, вам нужно найти функцию с тем же возвращаемым типом и аргументами. Как отмечает BrodieG в своем ответе, функции также обычно (всегда?) Имеют одно и то же имя, но без префикса Rf_
.
Благодаря Duncan Murdoch за полезные указатели. Любые ошибки - мои.
- 1. Определения отображения и определения Elasticsearch
- 2. Определения getJSON и определения переменных
- 3. Объявления, определения и вызовы
- 4. QT_INTERFACES и определения сигналов
- 5. Определения Truststore и Keystore
- 6. SFINAE и порядок определения
- 7. Несколько деклараций и определения
- 8. Оператор присваивания Python, определения функций и определения переменных
- 9. Терминология программирования и определения (python)
- 10. Локальные индуктивные определения и теоремы
- 11. вычисления и определения скорости сходимости
- 12. Chicken Scheme и деформированные определения
- 13. AngularJS структура проекта и ОПРЕДЕЛЕНИЯ
- 14. Аргументы и использование определения-синтаксиса
- 15. Размещение определения класса и прототипа
- 16. Определения языка и метода Ruby
- 17. Правила и определения синтаксиса подсветки
- 18. Bean определения и имя-поиск
- 19. Формальные определения классов и структур
- 20. и определения типов шаблона специализации
- 21. Объявления функции и последовательность определения
- 22. Запутывание определения MACRO и enum
- 23. Определения друг функций и классов
- 24. Противоречивые определения структуры и библиотеки
- 25. CMake и Dylib: определения символов
- 26. RethinkDB группировки и определения вывода
- 27. Переменные определения областей и наследование
- 28. Угловые2 и определения машинописных текстов
- 29. Определения и дублирующие уникальные строки
- 30. systemd До и после определения?
Спасибо Joshua. Я знал, что видел этот тип кода в другом месте по поводу Rf_, но отказался от попытки найти его через пару минут. – BrodieG