0

Matlab コーダーを使用して C コードに変換しようとしているいくつかの実用的な Matlab コードがあります。このエラーが発生しています:

18   c:\users\bla\project\strcmpi.h(79) : warning C4028: formal parameter 2 different from declaration
19   c:\users\bla\project\strcmpi.h(79) : error C2371: 'strcmpi' : redefinition; different basic types
20           c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(245) : see declaration of 'strcmpi'
21   NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
22   Stop.
23   The make command returned an error of 2
24   'An_error_occurred_during_the_call_to_make' is not recognized as an internal or external command,
25   operable program or batch file.

私には非常にC特有のように見えます(私は熟練したCプログラマーではありません)。このエラーを克服するために、誰かが私を正しい方向に向けることができますか? ありがとう。

PS:

以下は、いくつかの適応された Matlab コードです。

if(strcmpi(parameters.x,'bladibla') == 1)

    % some code

else

    % some more code

end

ここで、「パラメーター」は構造体です。私は自分の構造体に固執したいと思いますが、特に Matlab コーダーと C のコンテキストで上記を達成するためのより良い方法があれば、私に知らせてください。

4

1 に答える 1

1

strcmpi()(大文字と小文字を区別しない文字列比較)についてのことは、それが標準のC関数ではないということです。したがって、それに依存しているが、プラットフォーム間で移植可能にしようとするコードは、システムの実装が利用可能な場合はそれを延期しながら、独自の実装を提供しなければならない場合があります。私の経験では、プロジェクト自体のstrcmpi()実装は、構成オプションによって保護されます。c:\ users \ bla \ project \ strcmpi.hを開くと、次のようなコードが表示される場合があります。

#ifndef CONFIG_STRCMPI_PRESENT
int strcmpi(const char *string1, const char *string2);
#endif  // CONFIG_STRCMPI_PRESENT

これが表示された場合、問題を回避するための秘訣は、関連するconfig.hファイルを見つけて、次の行のコメントを解除することです。

// #define CONFIG_STRCMPI_PRESENT

これはすべて、同様の問題に関する私の経験に基づく推測にすぎません。

于 2013-02-04T05:26:14.623 に答える