メインコンテンツ

#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.0gnu4.9 などのコンパイラを指定します。コンパイラを指定することにより、解析用のコンパイル フラグがいくつか定義されます。

    詳細は、コンパイラ (-compiler) を参照してください。

  • 使用可能なコンパイラ オプションが使用しているコンパイラと一致しない場合は、コンパイル フラグ __BORLANDC____VISUALC32__ または __GNUC__ のいずれかを明示的に定義します。

    詳細は、プリプロセッサ定義 (-D) を参照してください。