显示带有标识符的错误消息并返回到MATLAB提示
#include " mexm .h" void merrrmsgidandtxt (const char *errorid, const char *errormsg,…);
#包含"fintrf.h"子例程merrrmsgidandtxt (errorid, errormsg)字符*(*)errorid, errormsg
errorid
包含MATLAB的字符串®消息标识符。有关创建标识符的信息,请参见MException
.
errormsg
字符串,指定为const char *
用C或字符* (*)
在Fortran。在C语言中,该函数支持UTF-8或本地万博1manbetx代码页(LCP)编码,并且字符串可以包括转换规范ANSI®Cprintf
函数。消息文本和转换参数的编码必须相同。
...
在C语言中,消息中使用的任何参数。每个参数必须有相应的转换规范。请参阅您的C文档printf
转换表。
的mexErrMsgIdAndTxt
函数将错误信息写入MATLAB窗口。有关更多信息,请参见错误
使用消息标识符的函数语法语句。打印错误消息后,MATLAB终止MEX文件并将控制权返回给MATLAB提示符。
调用mexErrMsgIdAndTxt
不会从内存中清除MEX文件。所以,mexErrMsgIdAndTxt
不调用通过注册的函数mexAtExit
.
如果你的应用程序调用mxCalloc
或者其中一个mxCreate
*例程分配内存,mexErrMsgIdAndTxt
自动释放分配的内存。
请注意
如果你在使用时得到警告mexErrMsgIdAndTxt
,您可能有内存管理兼容性问题。有关更多信息,请参见内存管理问题.
除了errorid
而且errormsg
,mexErrMsgIdAndTxt
函数确定错误发生的位置,并显示以下信息。例如,在函数中喷火
,mexErrMsgIdAndTxt
显示:
使用foo出错
如果使用MinGW-w64编译器编译MEX文件,请参阅中的异常处理主题的限制用MinGW-w64编译C/ c++ MEX文件的故障排除和限制.
请参阅
:matlabroot
走读生/ / refbook例子
字符
输入下面的代码片段检查输入参数,prhs [0]
,是字符串。如果不是,代码将显示一个警告。如果读取输入字符串时出现错误,代码将显示错误消息并终止MEX文件。
char *缓冲区;int buflen;//初始化变量if (mxIsChar(prhs[0])) {if (mxGetString(prhs[0], buf, buflen) == 0) {mexPrintf("输入字符串是:%s\n", buf);} else {mmyrmsgidandtxt ("MyProg:ConvertString", "不能转换字符串数据。");// exit MEX文件}}else {mexWarnMsgIdAndTxt("MyProg:InputString", "Input应该是一个字符串以正确打印。");} //继续处理