andersch.dev

<2024-07-03 Wed>

Microsoft Visual C++ (MSVC)

Microsoft Visual C++ (MSVC) is a proprietary C/C++ compiler that comes bundled with Visual Studio.

Supported standards

See /std (Specify Language Standard Version).

/std:c++14
/std:c++17
/std:c++20
/std:c++latest
/std:c11
/std:c17
/std:clatest

Common compiler switches

  • Switches to generate an .exe with a separate PDB (containing debug info) /Zi /link /DEBUG:FULL /PDB:main.pdb

Finding MSVC from a batch file

setlocal enabledelayedexpansion

REM TODO use %programfiles%
for %%V in (2022 2019 2017) do (
    if exist "C:\Program Files (x86)\Microsoft Visual Studio\%%V\Community\VC\Auxiliary\Build\vcvars64.bat" (
        set "VCVARS_PATH=C:\Program Files (x86)\Microsoft Visual Studio\%%V\Community\VC\Auxiliary\Build\vcvars64.bat"
        goto :found_vcvars
    )
    if exist "C:\Program Files\Microsoft Visual Studio\%%V\Community\VC\Auxiliary\Build\vcvars64.bat" (
        set "VCVARS_PATH=C:\Program Files\Microsoft Visual Studio\%%V\Community\VC\Auxiliary\Build\vcvars64.bat"
        goto :found_vcvars
    )
)

:found_vcvars
call "%VCVARS_PATH%"

Or use vswhere.

Shortcomings of MSVC (C-mode)

  • no typeof()

Resources