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: 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)(Polyspace Bug Finder).Macros that might be implicitly defined by the compiler.
Macros that Polyspace enables by default to emulate compiler behavior. See
Compilation toolchain (Static analysis)(Polyspace Bug Finder).
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 (Polyspace Bug Finder).
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 |