exponenta event banner

Ограничения с использованием структур

MATLAB возвращает указатели на структуры

MATLAB ® возвращает указатели на структуры. Возврат по значению не поддерживается.

Структура не может содержать указатели на другие структуры

Вложенные структуры или структуры, содержащие указатель на структуру, не поддерживаются. Однако MATLAB может получить доступ к массиву структур, созданных во внешней библиотеке.

Требования к аргументам структуры MATLAB

При передаче структуры MATLAB функции внешней библиотеки имена полей должны соответствовать следующим требованиям.

  • Каждое имя поля MATLAB должно соответствовать имени поля в определении структуры библиотеки.

  • Структуры MATLAB не могут содержать поля, отсутствующие в определении структуры библиотеки.

  • Если структура MATLAB содержит меньше полей, чем определено в структуре библиотеки, MATLAB устанавливает неопределенные поля равными нулю.

  • Имена полей чувствительны к регистру. Например, предположим, что библиотека mylib содержит функцию myfunc со следующим определением структуры.

    struct S {
        double len;
    };

    Имя поля: len. При передаче структуры myfunc с именем поля Len, MATLAB отображает ошибку.

    S.Len = 100;
    calllib('mylib','myfunc',S)

Требования к C struct Имена полей

Когда MATLAB загружает C struct , имена полей в MATLAB не чувствительны к регистру. Например, при загрузке библиотеки, содержащей следующее определение, MATLAB не создает два поля.

struct S {
    double Num;
    double num;
};

Связанные темы