Я использую гибкий массив в структуре. Поэтому я хочу изменить память, выделенную для этой структуры, с помощью моего собственного кода. В основном я хочу изменить функции new_structname() и structname_variable_set().Как изменить код по умолчанию, созданный SWIG для выделения памяти для структуры C?
typedef struct vector{
int x;
char y;
int arr[0];
} vector;
здесь, SWIG генерируется new_vector()
функции для выделения памяти, вызвав calloc(1,sizeof(struct vector))
где не SWIG обрабатывать эти типа структуры особым образом. Поэтому нам нужно изменить созданный swig new_vector(), чтобы выделить память для гибкого массива. Так есть ли способ справиться с этим?
Можете ли вы уточнить, как вам нужно их менять? Переключение на альтернативную именованную функцию с эквивалентной семантикой довольно просто, но если вы хотите сделать более сложные вещи, вам нужно будет сделать более глубокие изменения. – Flexo
В памяти функции new_structname() выделено ниже. var = calloc (1, sizeof (имя структуры)). это рассмотрит размер структуры, выходящей из гибкого массива. Итак, что я хочу сделать, это var = calloc (1, sizeof (struct name) + size_of_flexi_arr); где size_of_flexi_arr будет предоставлен пользователем. –
Я не хочу менять имя функции, я хочу изменить код внутри функции. –