Disabled preprocessor definitions (-U)
Undefine macros in preprocessed code
Description
Undefine macros in preprocessed code.
Set Option
Set the option using one of these methods:
Polyspace Platform user interface (desktop products only): In your project configuration, on the Build tab, select the Target & Compiler node and then enter macro names for this option.
Command line and options file: Use the option
-U. See Command-Line Information.
Why Use This Option
Use this option to emulate your compiler behavior. For instance, your compiler might consider a macro _WIN32 as undefined and execute the code in a #ifndef _WIN32 block. To emulate this behavior when running a Polyspace® analysis, use this option to specify _WIN32 as undefined.
This option undefines these macros:
Macros you defined by using the
-Doption. SeePreprocessor definitions (-D).Macros that might be implicitly defined by the compiler.
Macros that Polyspace enables by default to emulate compiler behavior. See
Compilation toolchain (Static analysis).
If you define a macro by using a #define statement in your source code, this option cannot undefine it.
Typically, you recognize from compilation errors that a certain macro must be undefined. For instance, the following code does not compile if the macro _WIN32 is defined.
#ifndef _WIN32
int env_var;
#endif
void set() {
env_var=1;
}env_var is undefined. However, the definition of env_var is in the #ifndef _WIN32 statement. The underlying cause for the error is that the macro _WIN32 is defined. You must undefine _WIN32.Settings
No Default
Use the Add empty row button
to add a new row for each macro being undefined, or add
multiple rows by using the Add/edit multiple rows button
.
Tips
Your compiler specification determines the values of many compiler-specific macros. In case you want to know how Polyspace defines a specific macro, use the option -dump-preprocessing-info.
To override a macro definition coming from a compiler specification, use the option
Preprocessor definitions (-D).To undefine the macro, use this option.
During the build process, file-specific undefines are merged with project level build configurations. Using this option with a CMAKE-based toolchain results in a warning.
Command-Line Information
You can specify only one flag with each -U option. However, you can specify the option multiple times.
Parameter:
-U |
| No Default |
Value:
macro |
Example (Bug Finder):
polyspace-bug-finder -U HAVE_MYLIB -U USE_COM1 |
Example (Code Prover):
polyspace-code-prover -U HAVE_MYLIB -U USE_COM1 |
Example (Bug Finder Server):
polyspace-bug-finder-server -U HAVE_MYLIB -U USE_COM1 |
Example (Code Prover Server):
polyspace-code-prover-server -U HAVE_MYLIB -U USE_COM1 |