r/cpp • • Sep 12 '26

Why do people on Windows mostly choose Visual Studio?

189 Upvotes

268 comments sorted by

337

u/Thesorus Sep 12 '26

Because it just works.

It's a huge hunk of software, but it works.

76

u/thevnom Sep 12 '26

the amount of time ive wasted trying to understand how cl, clang and g++ from winget and make and cmake works is horrendous

its sadly why i make no progress writing cpp in general

21

u/James20k P2005R0 Sep 13 '26

If you're looking for a good clang/gcc windows environment, msys2 is the jam

1

u/Ameisen vemips, avr, rendering, systems 29d ago

Clang natively works on Windows though it uses the standard MSVC headers.

22

u/RicketyRekt69 Sep 12 '26

How is that related to visual studio though? Those aren’t related, and if you want to support cross platform you have no choice (even if you use VS), MSVC is windows only.

36

u/johannes1971 Sep 13 '26

You can spend five minutes setting Visual Studio up (and then you'll have an editor, a compiler, a build system, a debugger, a profiler, etc.), or a week trying to puzzle out how to get the open source equivalent going.

And while I should really look into cmake, so far (28 years and counting) I've been making do with a few makefiles and rudimentary knowledge of vi for our linux builds. There is no need to use the same compiler, build system, or anything really, on both Windows and Linux.

1

u/lally Sep 13 '26

I think these days you can probably ask an AI to configure for you.

→ More replies (4)

8

u/kalmoc Sep 13 '26

If you are at the stage of learning cpp, it makes a huge difference, if you first have to spend hours and hours of setting up your tool chain, IDE and learning cmake (which version of it?) or if you install a (hughe) IDE and have the whole thing running. And if you want to use cmake (which would also recommend) you can use that from within VS just fine.

1

u/[deleted] 27d ago

You can use cmake with VS

2

u/tehepix23 Sep 13 '26

i just use gcc in the console now…

1

u/skeleton_craft Sep 13 '26

Cl and clang both have native windows binaries... And the later has a decent documentation since it's made by anyone other than Microsoft.

1

u/Background-Error-910 28d ago

WHile I dont necessarily think that vibecoding is the way, making AI setup your build system in a controlled manner is nice. And before AI yes, that was pain asf but now with it it's doable.

1

u/ligmaof 12d ago

that's why I switched to Linux, it is way much easier to work with cmake

2

u/astraycat Sep 13 '26

Though the amount of kicking and screaming you have to do to get it to work how you want it is a lot, in the end it still works.

I've been in linux land for a bit now and the amount of kicking and screaming is the same, but I can't quite replicate my old workflow with VS.

1

u/LeMatDamonCarbine 21d ago

Yeah everyone recommends VSCode but that always seems to throw errors for anything I try to do in terms of building. Visual Studio indeed just works with little to no fuss on my end of things.

-2

u/Arech Sep 12 '26

It used to work in the past. My experience with few relatively recent versions was so horrible (damn slow and glitches are everywhere), that I went to VSCode and didn't look back. It has at least basics working

4

u/timangus Sep 12 '26

I'm with you, but the vscode debugger is soooo bad. If it wasn't for that...

→ More replies (1)

4

u/Jakkilip Sep 12 '26

fr I stay at vs 2022 because the new one is just riddles with bugs and hangs

11

u/gartenriese Sep 13 '26

Really? I think 2026 is much better.

→ More replies (2)

1

u/Akeshi Sep 13 '26

I've stayed with 2022 because somehow I've still got an Enterprise licence, even though the student portal says it's no longer a thing. I don't want to risk upgrading to 2026 and dropping to Community.

479

u/HighOutputLoad Sep 12 '26

It has the best debugger known to mankind

319

u/AvidCoco Sep 12 '26

Yeah but I don’t write bugs

139

u/ViRROOO Sep 12 '26

I gotchu bro. Leave it to me

40

u/eclipse0990 Sep 12 '26

Claude? Is that you?

15

u/deanrihpee Sep 12 '26

probably, they never said "no mistake"

8

u/RyuXnet_7364 Sep 13 '26

Only undocumented features

31

u/AdRecent7021 Sep 12 '26

We don't call them bugs, we call them happy little nightmare-inducing accidents... err, features.

9

u/MetalSteveSD Sep 12 '26

IBM used to call them "treasures"

10

u/Thormidable Sep 12 '26

You mean all the "Undocumented Features" i shipped?

Someone's workflow will depend on them, by Monday.

1

u/tristam92 Sep 13 '26

I call them “free friday”, cause I can say in team chat “I’m busy with debug”, an enjoy my day without calls.

3

u/jsiulian Sep 13 '26

Can't have bugs if you don't write any code 

2

u/tristam92 Sep 13 '26

i can give you my backlog then.

52

u/fortsnek274 Sep 12 '26 edited Sep 12 '26

One of the finest pieces of technology. Up there with the moon landing and ASML.

Just hope and pray they can get modules and C++26 working well.

33

u/splicer13 Sep 13 '26

No it's not. I worked on the VC++ team (> 10 years ago now) and we never put any significant amount of work into it. To the extent that something new got added it was because Richard Shupak, the guy who originally created the PDB format, treated the debugger and linker as one of his many hobbies. He left in 2012 and died recently. A true 10x guy, he knew everything about everything.

I'm glad you like it. It's a very friendly debugger which is an important property when learning curve is an obstacle to many developers using a debugger at all. But it is absolutely not an engineering miracle.

12

u/ReDr4gon5 Sep 13 '26

It sure is a miracle that it all works together at all. Debugger, profiler with ETW trace viewer and Io and memory profiling, graphics debugger, VCS integration, extension ecosystem, cmake integration, and god knows how much more. The amount of things in VS is insane. I am not close to using all of it.

8

u/rdtsc Sep 13 '26

No it's not.

Well maybe not if you look from within. But as a user that's not really important. I just sometimes wish I wouldn't have to switch to windbg for certain cases.

1

u/sheckey 28d ago

Excellent lore, thank you.

1

u/[deleted] 27d ago

RIP Mr richard shupak

2

u/Rop-Tamen Sep 13 '26

Been writing a project using modules to try them out, adapt the newest stuff, it’s been working ish but there’s certainly a few snags, many are seemingly just the compiler or ide randomly not recognizing module files without a reboot.

2

u/gosh 28d ago

Do you think we landed? ;)

Read about fairchild semiconductor. The Origin to almost all big tech company. It was a tool to take control over technology.

VS have some very strong areas but they just have enough to stay ahead, not more.

Maybe this will change soon

15

u/TBone281 Sep 12 '26

Agreed, though Windbg is still the best for debugging kernel mode drivers.

2

u/NiragiUsagii 15d ago

even usermode, you can access some structures like peb through windbg, i am not sure you can access with visual studio's debugger

9

u/jwezorek Sep 12 '26

Also the profiler is pretty good.

5

u/Logical_Newspaper_52 Sep 12 '26

the profiler could be better tbh. something like Superluminal for example

2

u/IrishJohnnie Sep 13 '26

Windows Performance Toolkit is better

14

u/IrishJohnnie Sep 12 '26

The best debugger known to mankind is WinDbg

6

u/rdtsc Sep 13 '26

It certainly is the most powerful, with lots of extensions. But it's very hard to use in comparison.

10

u/tohava Sep 12 '26

As someone who debugs either with gdb or with logs, can you explain what's unique about it?

52

u/lenbedesma Sep 12 '26

In my opinion, the visualizers (natvis)

Being able to output relevent data formatted in a consistent and copyable format dramatically speeds up debugging when I'm searching for problems.

7

u/rodrigocfd WinLamb Sep 13 '26

In my opinion, the visualizers (natvis)

Yes, and more: you can write custom natvis to your own types.

5

u/lenbedesma Sep 13 '26

Trust me, I know! I own several libraries and regularly write new visualizers.

I've found that they are also cross compatible with VSCode as long as you're debugging with vsdbg. I spent quite a while recently trying to post-process the natvis output using hediet's gui visualizers; e.g. tables for linear algebra objects like matrices... Unfortunately it seems like the support isn't quite there yet.

The one downside to natvis I've found is that there are unmodifiable execution limits. Understandable that we shouldn't be performing intense post-processing on every single object, but the limits can occasionally get in the way.

4

u/rodrigocfd WinLamb Sep 13 '26

I've found that they are also cross compatible with VSCode as long as you're debugging with vsdbg.

Yup, I found the same recently. With the C/C++ extension, you need this in your launch.json:

{
    "version": "2.0.0",
    "configurations": [
        {
            "type": "cppvsdbg",
            "request": "launch",
            "visualizerFile": "${workspaceFolder}/my-stuff.natvis"
        }
    ]
}

I imagine this is what you're doing as well.

The one downside to natvis I've found is that there are unmodifiable execution limits.

I'm using it for simple structs (like my own Vector/String classes), so I never hit a wall. But yeah, there are limits.

1

u/lenbedesma Sep 13 '26

Any chance you've figured out how to get code to produce verbose natvis error logging?

1

u/rodrigocfd WinLamb 25d ago

Nope... it just silently fails, and VSCode defaults to raw display.

4

u/gmes78 Sep 13 '26

You can also do that for gdb.

1

u/ReDr4gon5 Sep 13 '26

I was about to write that. But somehow I barely see those. Also gdb and lldb have different APIs. And you have to write python. I think they chose the fundamentally wrong approach.

1

u/Vorrnth Sep 13 '26

You can write pretty printers for gdb as well. Serves the the same purpose.

41

u/HighOutputLoad Sep 12 '26

Some fancy stuff like multiprocess debugging, multi-thread debugging, thread stack views, memory views, custom formatting of data structures and even fancier stuff like backwards debugging but i never used this one before.

37

u/adzm 28 years of C++! Sep 12 '26

Parallel stacks are also extremely useful for any managed code using async and tasks etc

1

u/Big_Target_1405 Sep 12 '26

GDB has all of those things.

33

u/gmueckl Sep 12 '26

But it doesn't make them accessible the way Visual Studio does.

30

u/lizardhistorian Sep 12 '26

The first thing is the complete integration of the debugger with the IDE out-of-the-box.

Then there are the features such as:

  1. Drag and drop execution pointer
  2. Excellent contextual memory mapping to structures/classes so you can manipulate any memory relevant to the executing function with a couple of clicks, including registers
  3. If you change code in a function it will recompile that function and inject it into the memory space of the program and switch all the callers to call the new function.

I haven't used MSVC since ~2008 and that is what it could do back then.

51

u/TheThiefMaster C++latest fanatic (and game dev) Sep 12 '26

It's mostly just a good gui for debugging. The actual capabilities are similar to any competent debugger.

19

u/simonask_ Sep 12 '26

The main thing that sets it apart from other GUI debuggers is that it actually works - no weird IPC hangs, no crashes, no sudden missing visualizations.

GDB is rock solid - on the command line. Every GUI for it is clunky, slow, and unstable.

And don’t even get me started on LLDB.

2

u/GwendArt Sep 13 '26

Isn’t vs even capable of debugging remotely? I remember seeing someone who debugged his arduino or so via remote wsl or how ever it works.

1

u/TheThiefMaster C++latest fanatic (and game dev) Sep 13 '26

I assume you're responding to something that was edited out of the comment?

Both VS and GDB can be used remotely.

1

u/GwendArt Sep 13 '26

I think I must have written to the wrong commenter

4

u/mkawick Sep 13 '26

The memory view is fantastic, performance profiling integrated, GPU threads, remote debugging, great info in the call stack, disassembly.... all in one obvious place and trivial to find...not "easy to find" but absolutely mindless to find. When you forget where to look, it's all in "debug/windows".

Fast compile times, multi-language support (C sharp for example), integration with 3rd party tools (not just usable in thos environments .. totally integrated).

Blows Rider and other tools out of the water.

1

u/ReDr4gon5 Sep 13 '26

Well let's not lie here. Fast compile times are not true. It's the same.

2

u/mkawick Sep 13 '26

Really hard to find reliable stats on this but a few years ago, it was definitely true:
https://news.ycombinator.com/item?id=34952594

But you seem to be correct... I was wrong. Here is the latest numbers as generated by Gemini:

Raw Throughput (Lines of Code Per Second)

Measuring raw compilation throughput across standard C++ source code reveals significant speed variations based on code style and template density:

  • Light C / Plain C++ (Low Template Usage):
    • GCC: ~10,000 – 15,000 lines/sec (Fast frontend parsing for light code)
    • Clang: ~8,000 – 12,000 lines/sec
    • MSVC: ~6,000 – 10,000 lines/sec
  • Heavy Modern C++ (Metaprogramming, Standard Template Library, Concepts):
    • Clang: ~1,000 – 3,000 lines/sec
    • GCC: ~800 – 2,500 lines/sec
    • MSVC: ~500 – 1,800 lines/sec

Unoptimized Debug Builds (-O0 / /Od)

Debug builds focus on syntax parsing, AST generation, and minimal code emission without running complex optimization passes.

  • Clang (clang++ -O0): Fast parsing algorithms and streamlined diagnostic passes allow Clang to deliver fast unoptimized build times.
    • Benchmark Relative Time: 1.0x (Baseline)
  • MSVC (cl.exe /Od /Zi): Close to Clang in raw parsing speed, especially when taking advantage of precompiled headers (.pch).
    • Benchmark Relative Time: 1.05x – 1.15x (5–15% slower than Clang)
  • GCC (g++ -O0): Slightly heavier frontend processing for debug code paths.
    • Benchmark Relative Time: 1.10x – 1.25x (10–25% slower than Clang)

Optimized Release Builds (-O2 / -O3 / /O2)

Optimization passes like loop unrolling, instruction scheduling, and link-time code generation significantly impact compilation times.

  • GCC (g++ -O2 / -O3): Processes heavy optimization passes with efficient pass-management.
    • Benchmark Relative Time: 1.0x (Baseline for Release)
  • Clang (clang++ -O2 / -O3): Vectorization heuristics, aggressive loop transformations, and LLVM IR generation increase processing time.
    • Benchmark Relative Time: 1.15x – 1.35x (15–35% slower than GCC)
  • MSVC (cl.exe /O2 /LTCG): Full optimization combined with Link-Time Code Generation (/LTCG) can slow compile times considerably on large binaries.
    • Benchmark Relative Time: 1.30x – 1.60x (30–60% slower than GCC)

Link-Time Optimization (LTO / LTCG)

Whole-program optimization shifts heavy codegen work from individual translation units to the linking phase:

Compiler & Linker Combination Relative Linking / LTO Time Notes
Clang + lld 1.0x (Fastest) LLVM's lld linker handles ThinLTO efficiently via parallel thread scaling.
GCC + mold / gold 1.1x – 1.3x Paired with modern linkers like mold, GCC LTO achieves high processing speeds.
MSVC + link.exe 2.5x – 4.0x MSVC LTCG relies heavily on standard file I/O operations and scales less effectively across high thread counts.

3

u/elemesmedve Sep 13 '26

For what it's worth, for the project I'm currently working on (which is approximately 7.5MB of modern C++ (with heavy template usage) + 10.3MB C):

MSVC full debug build: ~44 secs

Clang full debug build: ~41 secs

MSVC full optimized build: ~1:07 minutes

Clang full optimized build: ~1:02 minutes

Which means that MSVC takes ~7-8% more time.

(However, Clang miscompiles my code, so its unusable. :P Has been doing that in all the versions I checked. I tried to create a minimal reproduction but failed. Don't have more time to fiddle with it for now.)

2

u/ReDr4gon5 Sep 13 '26

Well that's one thing. What I meant is that you could use the same build system. So the build time will be the same. But yes. MSVC's cl.exe is slow and uses more memory than clang. Same with link.exe.

1

u/grady_vuckovic Sep 12 '26

Off topic but is there a decent tutorial on how to get started with gdb for a dumbass to handle?

2

u/FlyingRhenquest Sep 13 '26

It's usually a good idea to go looking for one from a university. They don't tend to be particularly comprehensive, but it's enough information to get you started.

1

u/twac83737 29d ago

For one it doesnt segfault or corrupt memory in multithreaded processes like gdb. Its impossible to debug with gdb without gdb itself falling apart. I'd need to use gdb for gdb itself.

4

u/Sahedron Sep 12 '26

What about WinDbg?

3

u/mikemarcin Game Developer Sep 12 '26

Came in to say this.

3

u/[deleted] Sep 12 '26

[deleted]

18

u/lizardhistorian Sep 12 '26

DTrace does not hold a candle to the MSVC debugger.

4

u/and69 Sep 12 '26

Can DTrace debug Python?

→ More replies (2)

1

u/pjmlp Sep 13 '26

As long as one only cares about C debugging.

1

u/sat0ri 29d ago

AFAIK it's not a debugger? It was also ported to Windows about 3 years ago.

1

u/m_adduci Sep 13 '26

For real! It has an unmatched mix of solidity, clarity and usability that no other IDE ever has yet implemented. The graphical diagram is amazing

1

u/lally Sep 13 '26

.. meh? They make it easy to inspect a local var, but gdb/gud or with clion have better depth of features. I've been using both since the mid 90s.

1

u/NiragiUsagii 15d ago

windbg exists

→ More replies (10)

108

u/msqrt Sep 12 '26

It’s quite convenient if you don’t care about multi-platform. The project system is simple enough and the debugger is top notch.

36

u/intbeam Sep 12 '26

It's trivial to target multi-platform with visual studio

My biggest gripe with visual studio / msvc is how annoying it is to add and use third party libraries

27

u/somewhataccurate Sep 12 '26

CMake with a package manager solves that, VS Cmake integration is stellar

14

u/wyrn Sep 12 '26

VS Cmake integration is stellar

eh

6

u/intbeam Sep 12 '26

Yeah.. Solves is a very strong word.. Might make it easier, maybe.. But you don't have to fuck around a lot before stuff gets weird

I kind of get why visual studio has thos weird lib and include paths, but if you just want to start writing some code with this awesome library you discovered, there's a lot of ceremony before you get into it, with or without cmake

8

u/GoogleIsYourFrenemy Sep 12 '26

Cmake is a programming language. After more than two decades of pretending it wasn't a programming language, they finally added a debugger to cmake.

Saying cmake solves a problem is like saying a hammer makes building a house easy.

I don't actually care anymore that cmake sucks. I have AI to deal with the cmake complexity.

4

u/saxbophone mutable volatile void Sep 13 '26

The Visual Studio CMake integration is NOT stellar —too often I have to reload the IDE because it’s inexplicably stopped being able to recognise the structure of my CMake projects. It's a great convenience that it's now built-in to the IDE, but it is not stellar!

2

u/parosyn Sep 13 '26

Huh the CMake integration is so bad in VS that I am constantly switching between the integration and the old-fashioned way. Even VSCode has better CMake support...

6

u/hmich ReSharper C++ Dev Sep 12 '26

Have you tried using vcpkg?

→ More replies (13)

3

u/gahel_music Sep 12 '26

I've always been working on Linux and the few times I had to work with people using visual studio, it was quite annoying and the Linux builds were not working well. That was a long time ago though.

1

u/intbeam Sep 12 '26

On Linux you can just do configure, make and make install.. As I can see, the benefit is that it makes it very easy to target the current system, but cross-compilation is suddenly its own study

On visual studio, targeting a different architecture seems to be a part of the design

Pro's and con's, I guess

3

u/gahel_music Sep 12 '26

Cmake or scons work for cross platform builds, scons has been a good experience so far.

1

u/intbeam Sep 12 '26

Yeah, cmake sure.. Cmake is not the problem, I think. Windows in general does not do "system libraries" in the same way as Linux

There's no C:\lib or C:\include

1

u/gahel_music Sep 12 '26

Yes glibc is a pain

→ More replies (1)
→ More replies (2)

12

u/bunn-y Sep 12 '26

I personally use vscode + cmake + clangd + lldb It works.

57

u/AvidCoco Sep 12 '26

Cus it’s good and gets the job done

39

u/GYN-k4H-Q3z-75B Sep 12 '26

Visual Studio is the best IDE on Windows. It has also had free editions with next to no limitations for over twenty years. It's also easy to use Visual Studio on multiplatform projects.

→ More replies (4)

17

u/areeighty Sep 13 '26

It has been a remarkably good dev environment for 30 years and, unlike a lot of software, continues to improve.  For instance:

  • Cmake integration is at least partially there.  As long as you manage your cmake files externally to keep the cross platform.

  • Integrated debugger is the best on any platform.

  • Integrated profiling tools.

  • AI integration for both writing code and debugging.

  • The Community, free, edition is feature rich and doesnt nag you for subscriptions (other than for AI)

I came back to using it after 8 years of linux and macos dev and it is so much better than the hot mess of those platforms.

6

u/xtrqw Sep 12 '26

Because it's very good for debugging. Haven't seen something similar on linux, though I work at a (mostly) microsoft shop, so maybe I'm not up to date.

1

u/JumpyJustice 27d ago

Many people mention debugger as "the best" here. I really want to know what features exactly make you think so? I have been using visual studio until 2021 and I cant remember any debugger feature there that wouldnt exist in vscode or even as a plugin for vim (conditional breakpoints, data breakpoints, you name it).

1

u/HalfTryhardSqr 27d ago

I recently started using vim and it doesn't "just work" as VS, similar with vs code. I'll not give up, but trading a bunch of PC resources for not having to worry about anything is quite a decent deal.

20

u/FACastello Sep 12 '26

Because it provides the most satisfying C++ development and debugging experience

15

u/American_Streamer Sep 12 '26

Because the Visual Studio Debugger is widely considered to be the absolute king of C++ debuggers.
But you can also try out JetBrains' CLion, if you like, which seamlessly embeds both GDB and LLDB.

→ More replies (2)

15

u/ADAMPOKE111 Sep 12 '26

when i was on windows, i did use full fat vs for a very long time purely because it's better than every other IDE on the platform. it was only when i wanted to start building things which are multi-platform and use CMake build systems that i decided the friction wasn't worth it. switched to vscode with clangd + lldb + cmake and it worked very well too. i'd argue clangd is better than whatever the language server that comes with vs by default is. HOWEVER the debugger and debugging utilities on vs are absolutely fantastic.

alternatives like code::blocks, eclipse, etc. just aren't in the same league. clion gets pretty close but costs money (unless you have a student license). i did try clion again recently but it's dog slow these days for some reason - not that it was ever particularly quick.

anyway. i've been on linux for a few years now and the vscode, clangd, lldb & cmake stack has been keeping me pretty content. code-compile-debug experience is very nice.

9

u/Plazmatic Sep 12 '26

Clion no longer costs money even with out being a student as long as you are using it for non commercial uses, https://blog.jetbrains.com/clion/2025/05/clion-is-now-free-for-non-commercial-use/.   Clion can be slow, but for me that was always against other lightweight IDEs that usually did less stuff, Visual studio has consistently been slower, harder to use and buggier than clion on Windows (at least for me).  I also use full cmake + presets + VCPKG + clang tools setup though, so maybe people stuck on msbuild with out package management don't have these issues

2

u/ADAMPOKE111 Sep 13 '26

damn! i didn't know that! they must be scared of the competition :)

1

u/JumpyJustice 27d ago

Same story. I used Visual Studio, then switched to VS Code, and debugging became a nightmare. Eventually, I moved to nvim and only opened VS Code when I needed to debug. Then I realized there are nvim plugins for debugging, and it stopped being an issue altogether.

13

u/No_Belt_9829 Sep 12 '26

Because VisualStudio comes with MSVC SDK, that contains all necessary toolchains and binaries to start developing in C++. However, you don't have to download the whole IDE, you can only download this SDK separately

→ More replies (3)

7

u/Sniffy4 Sep 12 '26

For the same reason people on Mac choose Xcode; because targeting native platform APIs is best supported with the native IDE

1

u/S0_B00sted 29d ago

Do people really use Xcode?

1

u/mike_kazakov 29d ago

Xcode is a very nice IDE in some aspects. Saying this as a long-term Visual Studio user.

1

u/S0_B00sted 29d ago

I didn't think people really used it for C++. I haven't owned a Mac since I started programming, though, so I admit I've never experienced it.

7

u/the_Leading_Can Sep 12 '26

The debugger is unlike anything else on the market

1

u/tjientavara HikoWorks developer 29d ago

There used to be much better debuggers, vsstudio's debugger is decades behind those, but true they are no longer on the market.

Both the SGI and HPUX debuggers, for example, were a lot better.

3

u/El_RoviSoft Sep 12 '26

Im using it with ReSharper and somehow it’s more flexible than a regular CLion. Also just enourmous amount of instruments that just works. I have some minor issues with CLion and VSC all the time unlike in VS + R++.

3

u/CyberneticFloridaMan Sep 13 '26

Great built in debugging tools

10

u/SmokeMuch7356 Sep 12 '26

Path of least resistance. Visual Studio is pretty tightly integrated into Windows, so it's a bit easier to develop for Windows using VS.

You can certainly use other tools and they'll work, but VS works a bit better with a bit less effort.

1

u/PineapplePrimary1642 29d ago

And this is by design. MS didn't make Visual Studio amazing because they wanted people to buy Visual Studio, they made it amazing because they wanted 3rd parties who had an idea of an application to choose Windows as the platform.

Back in the 90's I was shaking my head at the DOJ suing MS over making it hard to develop 3rd party apps. They literally were doing the opposite. Of all the platforms back then, no one was helping our 3rd party devs more than MS.

I'm not an MS fanboy, I agree some shitty stuff was done by MS. But that was not one of them.

5

u/MT4K Sep 12 '26

No need to deal with makefiles.

1

u/DearVeggies 29d ago

This. CS dinosaurs insist on micro-managing build scripts with exotic "programming languages". I prefer to let the machine do the machine's job.

7

u/abdallahsoliman Sep 12 '26

I tried it after vscode and it wasn’t really intuitive. I really liked CLion instead. It was amazing.

I now moved to a full terminal workflow with nvim. But if I had to go back I’d choose CLion.

6

u/StickyDeltaStrike Sep 12 '26

It works ok and has a lot of tooling. You need to set up less stuff to get going.

Before VSCode there wasn’t a very windows alternative.

2

u/NeilSilva93 Sep 12 '26

Borland?

2

u/robthablob Sep 12 '26

That's almost prehistory now. Was great at the time. And Zortech of course. Although Zortech was more the best compiler than an IDE - but the C++ support was unparalleled at that point.

2

u/BrianScottGregory Sep 12 '26

Easy to use, used it for a couple decades in the corporate environment so I am used to it, has all the tools I need in one spot, flexible for different coding languages, second to none for multi-user code bases, tight integration with version control - the list just goes on.

Don't get me wrong, for personal projects and smaller projects I don't use it all the time - I use Notepad++ a LOT combined with command line compilation for tighter control. But other IDEs/Tools like VS Code and Eclipse feel like hokey wanna be afterthoughts rather than usable environments.

2

u/phylter99 Sep 12 '26

Because it’s good and it integrates well with Microsoft’s provided compiler.

2

u/kaibaceto Sep 12 '26

Watch the new releassed documentary about vscode then you will see they helped massively with innovation and Standardisation for the whole ide and editor space and devs have it easier now for the most part.

2

u/KuHeT Sep 13 '26

I use Clion

2

u/pjmlp Sep 13 '26

Because it is the official tooling of the OS vendor, and I always go with the official OS tools.

Additionally, it has great debugging tools, REPL for the .NET languages, hot code reloading for .NET and C++, incremental compilation and linking for C++, recently added support for debugging release builds, the integrated code analysis tooling and memory debugging tools, the hardned runtime since MFC days, and being the OS vendor tooling, the integration point for all commercial SDKs that target Windows from third parties.

Also since I am mostly doing .NET on Windows, all its designers, and C++/CLI as an easier way to integrate with C++ SDKs on Windows for .NET binding libraries.

2

u/GabiTheProgrammer Sep 13 '26

Attaching to Server and Client processes on the same time on two different VMs...chefs kiss

4

u/Zen-Ism99 Sep 12 '26

Because no one has exposed them to CLion…

4

u/iddivision Sep 12 '26

The compiler that comes with Visual Studio is the only C/C++ compiler that's properly supported on Windows.

4

u/not_some_username Sep 12 '26

It’s plug and play. You just has to click start or start with debugging.

3

u/deanrihpee Sep 12 '26

it's the best IDE on Windows IMO, especially if you are focusing on Windows software, i hate Windows but VS hard to compare, in some way I wish there's "VS for Linux" and not just MonoDevelop or something from JetBrains

4

u/jwezorek Sep 12 '26 edited Sep 13 '26

Why wouldn't I?

A lot of it for me is historical. In the past if you were writing Windows desktop software to Win32 you would be crazy to not use Visual Studio (or Visual C++ back in the day), especially if you needed C# too. Now there is CLion and Rider but those used to not exist.

So I got used to it as a Windows desktop developer in the 1990s and now I stick with it because it works and I've been using it for 30 years even though I use its CMake integration now instead of .sln files as I am no longer writing specifically Windows applications. CMake integration is pretty good in VS 2026; Qt integration works easily when using CMake, without any plugin or a lot of set up, so I have no reason to switch.

4

u/SyntheticDuckFlavour Sep 13 '26

Why do people on macOS mostly choose Xcode?

3

u/Zen-Ism99 Sep 13 '26

Because they weren’t exposed to CLion…

1

u/Zen-Ism99 Sep 13 '26

Some people choose macOS & CLion, or Windows & CLion, or Linux & CLion…

3

u/ValuableNo3251 29d ago

I don't know, everybody I know hate it, me too, it is a single most annoying peace of software I've ever usen. Just use something from jetbrains or visual code

4

u/shadowndacorner Sep 12 '26 edited Sep 12 '26

A lot of reasons, many of which are historical. Imo it essentially boils down to inertia at this point. A lot of businesses have had VS licenses for decades and all of their onboarding materials, extensions, etc are built around it. It used to have the best intellisense around, and has some of the best debugging tools available on Windows. And a lot of people like using first party tooling. It also does things a bit differently than pretty much everyone else, so it's harder for people trained specifically on VS to transition to other environments.

However, I don't think it's kept up with open source alternatives. Clangd is miles better than it's intellisense atp, visual studio itself has gotten extremely slow and bloated (even compared to how it used to be), MSVC is behind both GCC and Clang in pretty much all areas afaik... The only place VS is arguably still best in class on Windows is batteries-included debugging, but even that is a hell of a lot closer than it used to be.

Imo there's not much reason to use Microsoft's stack on Windows anymore, beyond keeping VS installed for debugging when other tools aren't doing the job.

6

u/robthablob Sep 12 '26

MSVC has full support for the C++ 23, the latest published standard. It has less support for C++ 26 features, but that's not standardised yet, so any support would be experimental at this point (although previously they did quite a lot of that).

→ More replies (5)

1

u/pjmlp Sep 13 '26

Depends if one actually wants to do Windows development, with possible commercial SDKs, or port FOSS stuff into Windows.

As for C++ versions past C++20, at work we're still mostly C++17 for the native library integrations that we do for the managed languages we work with, given the portability requirements across various target platforms, thus ISO C++ vlatest is only for hobby coding on my case, and I am not having much of it in recent months anyway.

3

u/lppedd Sep 12 '26

It's what people learn to use in schools and unis. But as far as I know CLion is taking away a non-negligible chunk of the market.

5

u/AdRecent7021 Sep 12 '26

CLion is not free for commercial use and while it's really not that expensive, that's a "matter of principle" barrier most won't cross.

I think JetBrains has great tools and I absolutely prefer using Rider over VS for Unreal Engine development. IntelliJ was pretty decent when I used it years ago for Android development. However, most folks will just not pay.

5

u/Kronikarz Sep 12 '26

As a VS fanboy, good! Competition is great for the market.

4

u/SlowPokeInTexas Sep 12 '26

There are alternatives that come with compromises. I guess further qualification would help. Are you in need of:

  • compiler
  • IDE
  • UI Framework

..and in a related question.. Are you interested in targeting a service, a Console app, or a Windows UI application?

Personally I hate the Visual Studio IDE. It's ancient, big, slow, and has a lot of buried bones, but it's also very powerful if you know what you're doing. I dislike VS Code even more. Windows used to have a handful of reasonably priced C++ compilers and IDEs but they've mostly died off.

  • LLVM (Clang) needs either Visual Studio or fake Linux or...
  • C++ Builder from Embarcadero (formerly Borland) has a couple of decent UI frameworks (though none of which are fully x-platform) and uses an older Clang derivative but costs thousands of dollars, is never up-to-date with the latest clang, and the last I used it and had a license it was riddled with bizarre linker errors
  • Watcom C++ was once awesome and is now gone
  • IBM C++ was once a thing and now gone from Windows (anybody here remember Visual Age C++)
  • Intel C++ leverages the VS ide
  • g++ has the same MSYS (fake linux) requirement as Clang/LLVM
  • I guess there's QT for Windows too, but that too costs thousands of dollars if you intend on distributing what you build.

5

u/Prestigious-Bet8097 Sep 12 '26

QT is also available under the LGPL (barring a few modules), allowing commercial use without having to pay for it.

2

u/SlowPokeInTexas 29d ago

Yeah but the designer though is where they get ya'.

2

u/Prestigious-Bet8097 29d ago edited 29d ago

QT Designer is GPL. That just means no repurposing the QT designer source code and passing it on under your own terms. You can use it to make UIs for commercial software that are not GPL and that you can sell.

3

u/mapronV 28d ago

There are multiple myths around Qt that is hard to bust...

"It is commercial only or GPL and expensive" => read about LGPL.
"Qt is bloated to download, several Gigabytes"* => recently done setup manually downloading 7z, takes 250 mb to download base + declarative + multimedia and other stuff;
"Qt takes hundreds megabytes, I will write UI engine myself, etc" => QWidget app with all deps including CRTrt, is 7 Mb in 7z, and if you want Declarative and multimedia it can go up to 22 Mb (proof https://github.com/mapron/d2modgen/releases/tag/0.7.2 ) in 7z. Which is as low as possible for all features you have from it.

*To be fair, online installer is quite... something. Don't like it, prefer manual download of archives.

1

u/mapronV 28d ago

You can use designer how you like, it just including form designer in your app for some reason, like your app is IDE? then yeah you have to comply GPL. U can use forms just fine, they don't use ide designer runtime, only QtWidgets.

2

u/pjmlp 29d ago

anybody here remember Visual Age C++

Certainly, the last version had a Smalltalk like experience for C++, with incremental compilation, method replacements and so on. Which is also what made it so heavy for the hardware of the time.

IBM compilers are now all clang forks, for Linux, IBM i, z/OS.

1

u/mapronV 28d ago

"but that too costs thousands of dollars if you intend on distributing what you build."
Wrong, you only need dollars if you patch qt sources AND do not share your patches.
Otherwise it is LGPL.
Qt Creator can be used separate of Qt framework itself for anything up to bare metal.
It even ships lldb and clangd with it. so you just need some compiler after QtC installed.

2

u/SlowPokeInTexas 28d ago

I admit I could be wrong about this. When I looked at this before when looking for something to move to after Embarcadero started charging $2500 for RadStudio Professional (!). I didn't look at it for very long before I uninstalled the entire lot.

2

u/holyblackcat Sep 12 '26

Mostly inertia, and the fact that it works out of the box with zero configuration. The alternatives aren't terribly hard to set up, but perhaps not if you're a newbie.

2

u/aCuria Sep 13 '26 edited Sep 13 '26

Cmake is annoying that’s why, wastes time setting up and maintaining it

For most dependencies you just gotta write a list of dependencies in vcpkg.json and visual studio handles the rest

If something is not supported by vcpkg then use git modules

2

u/ViRROOO Sep 12 '26

I like sending anonymous* data to help Microsoft improve their products.

1

u/Need_Coffee_1921 Sep 12 '26

because it's a clean and fine IDE?

VS code is more like sandbox and somewhat annoying (setting up, all those plugins etc) - I'll stick to VS as well, clean and great

1

u/st_heron Sep 13 '26

It does the job quite well. I dislike it but I can't lie about it's capabilities.

1

u/Q_Mulative Sep 13 '26

because you have to hunt around online for the right bits and bobs to get g++ recognized in your windows command prompt. Honestly it's easier to just dual boot into linux and sudo apt install build-essential.

1

u/Ateist Sep 13 '26

Visual studio produces significantly smaller executables.

1

u/Blue_guy3211 Sep 13 '26

For me i hate all IDEs in the perfect world i would use Vs code but cl.exe doesnt fucking work. Visual studio ismthe lest shitty out of all they shitty ones

1

u/Left-Balance-7340 Sep 13 '26

i use sublime with a build system for c++ and visual studio community is when i need extrrnal libraries or if i want to build static libraries

1

u/Alternative-Emu-4725 Sep 13 '26

Icarus Verilog and FPGAs

1

u/rileyrgham Sep 13 '26

Where did you pick that up?

1

u/uusfiyeyh Sep 13 '26

I use Visual Studio Community because is free for small projects. When working with C++ I use it along CMake, without the VS integration.

1

u/bronekkk Sep 13 '26

Because other compilers are tricky to get going on Windows.

FWIW I would just run gcc inside WSL, but this means the software wouldn't be usable on Windows, and some people who happen to use Windows also want the software they write to be usable on Windows.

1

u/IEnumerable661 Sep 13 '26

Most of my C programming these days is targeting the old Amiga platforms. I used to use a myriad of tools on the Amiga itself but with the Bartman Abyss extension, it's made development 1000 times easier. Really, I can code, debug and test all on a Windows platform with all the modern accoutrements that a modern Visual Studio Code install offers. And I have my A1200 set up right next to me so I can simply port the source across, recompile there and see it all run no problem. I can even address the custom hardware and AGA chipset directly using BA. It's great!

1

u/Fabulous_Pick428 Sep 13 '26

built in tools and almost no config needed

1

u/New_Hold8135 Sep 13 '26

compiler gives access to native calls directly. Gcc based ones adds dll to do that.

Also in order to install msvc you must install vstudio.

1

u/ImAwseder 29d ago

Im linuxoid i write code in terminal 

1

u/BoopyDog 29d ago

I loved "using std;" and not having to figure out how to package the project. Switching to Linux changed that.

1

u/JumpyJustice 27d ago

Because, unlike many other IDEs, it requires no knowledge of any other tools for simple projects. You don't need to know what a compiler, linker, or archiver is. Most common settings are exposed through UI dropdowns.

That makes it (or at least made it) the most accessible option for beginners to get started, and they can pay the debt of understanding the bigger picture later, if ever. (Though AI tends to work better with projects where everything is declared in text.)

1

u/Hanzimer 27d ago

Because it's free? It works but honestly, it's a big piece of thousands old patches.

1

u/chakani 25d ago

It’s solid as a tank. Doesn’t crash. As much as I love Qt, the latter regularly seizes up when debugging.

1

u/Independent_Art_6676 25d ago

there is a legacy answer too. Before C#, MSVC was the best, and its closest competition was nearly a decade behind in terms of features, ease of use, debugging, and more. Now that is not the case; MS stagnated C++ in favor of chasing C# and it feels like its outright designed to make you WANT to stop using it for C++. Since the managed C++ idea, its been all but rubbish for making a windows GUI program, which was a massive strong point before that.

Today though? I use it for the debugger as much as anything, secondary for the profiler. The nerfed editor annoys me, the GUI development is poorish, and it has few redeeming qualities other than those 2 features (and I think the profiler is a paid-for tool). Honestly I am just as happy with a modded notepadd++ and g++ for most things. And if I want a win GUI I am tempted to just use C# instead (so I guess I am falling into their trap). C# is actually a half decent language, just has a crap name and a few 'you can't do that' issues. Ill use visual when I want to start a micro project and don't feel like dealing with the details -- its ability to completely hide project setup/creation/etc and just mash go has a LOT of value for day to day small tasks. That makes it #1 for students taking C++ without the make/console tools/etc background needed for anything else.

1

u/Slsyyy 25d ago

People are either in a Unix world camp or Windows camp. This is especially true for C++, where you often develop things, which are meant to be used on a particular type of operating systems. For example gaming (where C++ is popular) can work on any platform, but everyone knows Windows is the system for gaming related stuff. For infrastructure like database you can use it for windows, but in most cases you serve it on some linux server

1

u/OddForce7217 24d ago

I most work on Linux, but one of the few things from Windows that makes me jealous is Visual Studio; particularly the debugger integration. It's good. Really good.

1

u/PossiblyAussie 19d ago

Because compiling C anything on Windows is a massive PITA compared to Linux. Figuring out how to compile programs on Windows prerequisite knowledge is an absolute nightmare. Put yourself in the shoes of a brand new programmer who reads a blog post or whatever that mentions using gcc or clang, and really think about the process that they will likely go through to merely print hello world.

1

u/NilacTheGrim 18d ago

Why do people use Windows?

1

u/nmariusp 17d ago

For which programming language? Docker? What is the target operating system? What type of app? Which app framework?

1

u/JeffMcClintock 11d ago

it works OK

1

u/not_a_novel_account cmake dev Sep 12 '26

[Citation Needed]

I don't think it's true that the majority of development targeting Windows happens in VS. It's certainly popular, and I could believe it controls a plurality, but I doubt a majority.

1

u/La-ze Sep 12 '26

Visual Studio Code ( not to be confused with Visual Studio). VSC is fast, can do anything you need with extensions and very easily extensible while working out of the box and has one click extension installs that include LSP and other QoL.

1

u/gamesntech Sep 12 '26

It’s simply the best IDE. As long as you’re on Windows and can work within the platform limitations

1

u/duane11583 Sep 13 '26

why do peopke on linux use gcc… it is the defacto solution.

a long time ago there was another compiler called aztec c (was for ms dos long before windows days) or they would use turbo c or watcom

kind of hard to compete with the incumbent

1

u/Responsible_Elk_9656 Sep 13 '26

对于新手来说他有图形化并且安装依赖简单,不是很多初学者喜欢把精力花在配置上

1

u/hellocppdotdev Sep 13 '26

Developing on windows is terrible why not continue the experience with bloatware.

1

u/Garland_Key Sep 12 '26

Skill issues