mexErrMsgIdAndTxt (C および Fortran)
識別子と共にエラー メッセージを表示し、MATLAB プロンプトに戻る
C 構文
#include "mex.h" void mexErrMsgIdAndTxt(const char *errorid, const char *errormsg, ...);
Fortran 構文
#include "fintrf.h" subroutine mexErrMsgIdAndTxt(errorid, errormsg) character*(*) errorid, errormsg
引数
erroridMATLAB® メッセージ識別子を含む文字列。識別子の作成方法の詳細については、
MExceptionを参照してください。errormsg表示する文字列。C では
const char*、Fortran ではcharacter*(*)として指定します。C において、この関数は UTF-8 またはローカル コード ページ (LCP) のエンコードをサポートし、ANSI® C の関数printfで使用される変換仕様を文字列に含めることができます。メッセージ テキストと変換引数の両方のエンコードは同じでなければなりません。...C では、メッセージ内で使用される任意の引数。各引数には対応する変換指示子がなければなりません。
printfの変換表については、C のドキュメンテーションを参照してください。
説明
関数 mexErrMsgIdAndTxt は、エラー メッセージを MATLAB ウィンドウに書き込みます。詳細については、メッセージ識別子を使用した関数 error の構文ステートメントを参照してください。エラー メッセージを出力した後、MATLAB は MEX ファイルを終了し、制御を MATLAB プロンプトに戻します。
mexErrMsgIdAndTxt を呼び出しても、MEX ファイルはメモリからクリアされません。そのため、mexErrMsgIdAndTxt は mexAtExit を介して登録されている関数を呼び出しません。
アプリケーションが mxCalloc または mxCreate* ルーチンのいずれかを呼び出してメモリを割り当てた場合、mexErrMsgIdAndTxt は割り当てられたメモリを自動的に解放します。
メモ
mexErrMsgIdAndTxt の使用中に警告が表示される場合は、メモリ管理の互換性の問題が生じている可能性があります。詳細については、メモリ管理の問題を参照してください。
注意
errorid と errormsg のほかに、関数 mexErrMsgIdAndTxt はエラーの発生場所を判断し、以下の情報を表示します。たとえば関数 foo では、mexErrMsgIdAndTxt は以下を表示します。
Error using foo
MinGW-w64 コンパイラで MEX ファイルをコンパイルする場合はC/C++ MEX ファイルを MinGW -w64 でコンパイルする際のトラブルシューティングと制限の例外処理の制限に関するトピックを参照してください。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
ここで filename は、次のようになります。
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