#error
命令に関連する Polyspace コンパイル エラーの修正
問題
解析が停止し、#error
命令を含むメッセージが表示されます。たとえば、「#error directive: !Unsupported platform; stopping!
」のようなメッセージが表示されます。
原因
通常、#error
命令は、特定のマクロが定義されていない場合に致命的なエラーをトリガーするためにコードで使用されます。コンパイラではマクロが暗黙的に定義されているため、コードのコンパイル時にエラーがトリガーされません。しかし、Polyspace® の既定のコンパイルでは、マクロが定義されていると見なされずにエラーが発生します。
たとえば、次の例では、マクロ __BORLANDC__
、__VISUALC32__
または __GNUC__
が定義されていない場合にのみ、#error
命令に到達します。GNU® C コンパイラなどのコンパイラを使用した場合は、マクロ __GNUC__
が定義されていると見なされ、エラーは発生しません。しかし、Polyspace の既定のコンパイルを使用した場合は、マクロが定義されていると見なされません。
#if defined(__BORLANDC__) || defined(__VISUALC32__) #define MYINT int #elif defined(__GNUC__) #define MYINT long #else #error !Unsupported platform; stopping! #endif
解決法
コンパイルを正常に実行するには、次のいずれかを行います。
visual12.0
やgnu4.9
などのコンパイラを指定します。コンパイラを指定することにより、解析用のコンパイル フラグがいくつか定義されます。詳細は、
コンパイラ (-compiler)
を参照してください。使用可能なコンパイラ オプションが使用しているコンパイラと一致しない場合は、コンパイル フラグ
__BORLANDC__
、__VISUALC32__
または__GNUC__
のいずれかを明示的に定義します。詳細は、
プリプロセッサ定義 (-D)
を参照してください。