mexErrMsgIdAndTxt (C and Fortran)

Отобразите сообщение об ошибке с идентификатором и вернитесь к подсказке MATLAB

Синтаксис C

#include "mex.h"
void mexErrMsgIdAndTxt(const char *errorid, 
  const char *errormsg, ...);

Синтаксис языка ФОРТРАН

#include "fintrf.h"
subroutine mexErrMsgIdAndTxt(errorid, errormsg)
character*(*) errorid, errormsg

Аргументы

errorid

Строка , содержащая MATLAB® идентификатор сообщения. Для получения информации о создании идентификаторов смотрите MException.

errormsg

Строка для отображения, заданная как const char* на C или character*(*) на Фортране. На C функция поддерживает UTF-8 или локальную кодировку на странице кода (LCP), и строка может включать спецификации преобразования, используемые ANSI® C printf функция. Кодировка для текста сообщения и аргументов преобразования должна быть одинаковой.

...

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

Описание

mexErrMsgIdAndTxt функция запишет сообщение об ошибке в окно MATLAB. Для получения дополнительной информации смотрите error оператор синтаксиса функции с использованием идентификатора сообщения. После печати сообщения об ошибке MATLAB завершает работу файла MEX и возвращает управление в подсказку MATLAB.

Вызов mexErrMsgIdAndTxt не очищает файл MEX из памяти. Итак, mexErrMsgIdAndTxt не вызывает функцию, зарегистрированную через mexAtExit.

Если ваше приложение позвонило mxCalloc или один из mxCreate* стандартные программы для выделения памяти, mexErrMsgIdAndTxt автоматически освобождает выделенную память.

Примечание

Если вы получаете предупреждения при использовании mexErrMsgIdAndTxt, у вас может быть проблема совместимости управления памятью. Для получения дополнительной информации см. раздел «Проблемы управления памятью».

Замечания

В дополнение к errorid и errormsg, mexErrMsgIdAndTxt функция определяет, где произошла ошибка, и отображает следующую информацию. Для примера в функции foo, mexErrMsgIdAndTxt отображает:

Error using foo

Если вы скомпилируете файл MEX с помощью компилятора MinGW-w64, смотрите ограничения, за исключением темы обработки в разделах Поиск и устранение проблем и ограничений при компиляции файлов C/C + + MEX с MinGW-w64.

Примеры

См. эти примеры в matlabroot/ extern/examples/refbook:

Валидация char Вход

Следующий фрагмент кода проверяет, входной параметр ли, prhs[0], является строкой. Если нет, в коде отображается предупреждение. При ошибке чтения входа строки код выводит сообщение об ошибке и завершает работу файла MEX.

char *buf;
int buflen;

// initialize variables

if (mxIsChar(prhs[0])) {
    if (mxGetString(prhs[0], buf, buflen) == 0) {
        mexPrintf("The input string is:  %s\n", buf);
    }
    else { 
        mexErrMsgIdAndTxt("MyProg:ConvertString",
           "Could not convert string data.");
        // exit MEX file
    } 
}
else {
    mexWarnMsgIdAndTxt("MyProg:InputString",
        "Input should be a string to print properly.");
}

// continue with processing
Представлено до R2006a