exponenta event banner

mexErrMsgIdAndTxt (C и 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 ® Cprintf функция. Кодировка для текста сообщения и аргументов преобразования должна быть одинаковой.

...

В языке 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