Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UDR на С / 3 сообщений из 3, страница 1 из 1
19.02.2026, 11:03
    #40142703
shiche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на С
Доброго дня. Есть куча UDF написанных на C++ Builder. Их надо переписать под UDR на g++, Firebird 5.0.2 (Linux 64-bit). Сделал функцию с помощью макросов:
Код: C
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// analyze.cpp

FB_UDR_BEGIN_FUNCTION(AnalysisBLOB)
FB_UDR_EXECUTE_FUNCTION
{
  // some code
}
FB_UDR_END_FUNCTION

// Another file, main.cpp
FB_UDR_IMPLEMENT_ENTRY_POINT
Все работает.

В другом файле той же библиотеки добавляю следующую функцию, сначала с кодом, затем я код убрал для чистоты эксперимента:
Код: C
1.
2.
3.
4.
5.
6.
7.
// bparams.cpp
FB_UDR_BEGIN_FUNCTION(BuildPointParam)
FB_UDR_EXECUTE_FUNCTION
{
  // No any code
}
FB_UDR_END_FUNCTION
И первая внезапно начинает падать в конце выполнения. Тут явно я что-то не понимаю в оформлении нескольких функций. Подскажите, пожалуйста, как правильно заводить несколько функций независимых друг от друга.
...
Рейтинг: 0 / 0
19.02.2026, 12:54
    #40142713
shiche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на С
shiche [игнорируется] 

Проблема отпала. В старом коде все делалось через malloc / free. С одной функцией прокатывает. А с двумя более нужно применять C++ new / delete.
...
Рейтинг: 0 / 0
19.02.2026, 15:11
    #40142724
sim_84
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на С
shiche [игнорируется] 

В современных плюсах прямые вызовы new/delete надо избегать без крайней необходимости.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UDR на С / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]