主要内容

(C和Fortran语言)

用标识符显示错误消息并返回MATLAB提示

C语法

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

Fortran语言的语法

#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,则可能存在内存管理兼容性问题。有关更多信息,请参见内存管理问题

讲话

除了erroriderrormsg,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 .");} //继续处理
之前介绍过的R2006a