Main Content

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 ファイルはメモリからクリアされません。そのため、mexErrMsgIdAndTxtmexAtExit を介して登録されている関数を呼び出しません。

アプリケーションが mxCalloc または mxCreate* ルーチンのいずれかを呼び出してメモリを割り当てた場合、mexErrMsgIdAndTxt は割り当てられたメモリを自動的に解放します。

メモ

mexErrMsgIdAndTxt の使用中に警告が表示される場合は、メモリ管理の互換性の問題が生じている可能性があります。詳細は、メモリ管理の問題を参照してください。

注意

erroriderrormsg のほかに、関数 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

バージョン履歴

R2006a より前に導入

すべて展開する