用标识符显示错误消息并返回MATLAB提示
#include "mex.h" void mexrrmsidandtxt (const char *errorid, const char *errormsg,…);
#include "fintrf.h"子例程merrrmsgidandtxt (errorid, errormsg)字符*(*)errorid, errormsg . txt (
errorid
包含MATLAB的字符串®消息标识符。有关创建标识符的信息,请参见MException
.
errormsg
显示的字符串,指定为const char *
在C或字符* (*)
在Fortran。在C语言中,该函数支持UTF-8或本地金宝app代码页(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 {mexrrmsgidandtxt ("MyProg:ConvertString", "无法转换字符串数据");// exit MEX file}} else {mexWarnMsgIdAndTxt("MyProg:InputString", "Input should be a string to print right .");} //继续处理