StructLayout
StructLayout copied to clipboard
support MSVC toolset option for side-by-side toolset installations
Struct Layout compilation uses incorrect version of MSVC++ toolchain when the system has multiple VS installations, and/or multiple toolchain installed side-by-side on a single VS instance, and a given project is configured to select a specific version.
Here is the project configuration snapshot where this setting is made:
To reproduce, install a secondary (older) version of C++ toolchain using the VS Installer (locate one under individual component install). Configure a sample project to use this older version. Struct Layout will insist on using the latest version available, instead of the one specified by the project.
On non-trivial codes, this causes compiler errors because the code may not be compatible with the new toolchain versions (hence the official support for such per-project selection and side-by-side paradigm by VS). To reproduce this scenario artificially, add the following preprocessor condition in code:
For example,
#if _MSC_VER > 1927
#error "unsupported compiler
#endif
where 19.27 corresponds to v14.27 of the MSVC toolchain:
Thanks for reporting this. The Struct Layout parser is using Clang underneath, but I will have a look to see if I can at least propagate the proper version definitions.
Hopefully I will have time to have a look soon.