Отобразите сообщение об ошибке с идентификатором и возвратитесь к подсказке MATLAB
#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, смотрите ограничения с темой обработки исключений в Поиске и устранении проблем и Ограничениях при компиляции Файлы MEX C/C++ с 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