5

Vector CANoe で CAPL スクリプトを開発しており、テキスト文字列を返す関数をいくつか定義する必要があります。C では、次のように記述します。

char * ErrorCodeToMsg(int code)

また

char [] ErrorCodeToMsg(int code)

CAPL では、両方の定義が . で失敗しparse errorます。これまでに思いついた唯一の実用的な解決策は次のとおりです。

variables {
  char retval[256];
}

void ErrorCodeToMsg(int code) {
  char [] msg = "Hello word";
  strncpy(retval, msg, 256);
}

もちろん、これは非常に醜いです。なぜなら、各呼び出しにErrorCodeToMsgは 1 つではなく 2 つのステートメントが必要だからです。より良い方法はありますか?

4

2 に答える 2

4

文字列ベースの関数と同じように行う必要があります。

 void ErrorCodeToMsg(char buffer[], int code){
 buffer = myListOfCodes[code];
 }

値は、参照値を使用してバッファに格納されます。Capl で文字列を返すことはできません。@これが、セレクターを使用して文字列システム変数にアクセスできない理由です。

于 2015-06-19T19:59:15.970 に答える