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
引数
errorid
MATLAB® メッセージ識別子を含む文字列。識別子の作成方法の詳細については、
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 でコンパイルする際のトラブルシューティングと制限の例外処理の制限に関するトピックを参照してください。
例
の次の例を参照してください。matlabroot
/extern/examples/refbook
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