Are there any disadvantages, side effects, or other issues I should be aware of when using the "Multi-processor Compilation" option in Visual Studio for C++ projects? Or, to phrase the question another way, why is this option off by default in Visual Studio?
The documentation for /MP says:
Incompatible Options and Language Features
The/MPoption is incompatible with some compiler options and language features. If you use an incompatible compiler option with the/MPoption, the compiler issues warning D9030 and ignores the/MPoption. If you use an incompatible language feature, the compiler issues error C2813then ends or continues depending on the current compiler warning level option.
Note:
Most options are incompatible because if they were permitted, the concurrently executing compilers would write their output at the same time to the console or to a particular file. As a result, the output would intermix and be garbled. In some cases, the combination of options would make the performance worse.
And it gives a table that lists compiler options and language features that are incompatible with /MP:
#importpreprocessor directive (Converts the types in a type library into C++ classes, and then writes those classes to a header file)/E,/EP(Copies preprocessor output to the standard output (stdout))/Gm(Enables an incremental rebuild)/showIncludes(Writes a list of include files to the standard error (stderr))/Yc(Writes a precompiled header file)
Instead of disabling those other options by default (and enabling /MP by default), Visual Studio makes you manually disable/prevent these features and enable /MP.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With