【发布时间】:2019-06-20 09:21:26
【问题描述】:
我想在检测到 NaN 后停止执行 C 代码并使用 mexWarnMsgTxt 将错误消息发送到 MATLAB。
C 代码通过 mex 文件从 MATLAB 执行。我尝试使用 abort() 和 exit() 这确实杀死了 c 程序,但也杀死了 MATLAB(我猜是因为它是这里的调用进程。)
#include "mex.h"
#include "matrix.h"
for (int i = 0; i <= 5; i++)
{
if (mxIsFinite(out[i])) {
}
else if (mxIsInf(out[i])) {
char *err_msg = malloc(max_len_err_msg);
snprintf(err_msg, max_len_err_msg, "Inf detected in file %s at line %d", __FILE__, __LINE__);
mexWarnMsgTxt(err_msg);
abort();
//free(err_msg);
//abort(1);
/* NOTE: Test for NaN is here for illustration only. If a double
* is not finite and is not infinity, then it is a NaN */
}
else if (mxIsNaN(out[i])) {
char *err_msg = malloc(max_len_err_msg);
snprintf(err_msg, max_len_err_msg, "NaN detected in file %s at line %d", __FILE__, __LINE__);
mexWarnMsgTxt(err_msg);
abort();
//free(err_msg);
}
}
我只希望我的 mexFunction 停止但不终止 Matlab。
【问题讨论】:
-
您是否尝试过使用
return或break?