Main Content

Fix Polyspace Compilation Errors Related to #error Directive

Issue

The analysis stops with a message containing a #error directive. For instance, the following message appears: #error directive: !Unsupported platform; stopping!.

Cause

You typically use the #error directive in your code to trigger a fatal error in case certain macros are not defined. Your compiler implicitly defines the macros, therefore the error is not triggered when you compile your code. However, the default Polyspace® compilation does not consider the macros as defined, therefore, the error occurs.

For instance, in the following example, the #error directive is reached only if the macros __BORLANDC__, __VISUALC32__ or __GNUC__ are not defined. If you use a GNU® C compiler, for instance, the compiler considers the macro __GNUC__ as defined and the error does not occur. However, if you use the default Polyspace compilation, it does not consider the macros as defined.

#if defined(__BORLANDC__) || defined(__VISUALC32__) 
#define MYINT int 
#elif defined(__GNUC__) 
#define MYINT long 
#else
#error !Unsupported platform; stopping!
#endif

Solution

For successful compilation, do one of the following:

  • Specify a compiler such as visual12.0 or gnu4.9. Specifying a compiler defines some of the compilation flags for the analysis.

    For more information, see Compiler (-compiler).

  • If the available compiler options do not match your compiler, explicitly define one of the compilation flags __BORLANDC__, __VISUALC32__, or __GNUC__.

    For more information, see Preprocessor definitions (-D).