Why is -o a candidate for deletion from the Microsoft compiler and linker?

Yes. You should use /F to set compiler output options.


Command line arguments on Windows are different than command line arguments on Unix. They usually start with a / instead of a -, and the arguments to cl.exe won't necessarily match those of cc on Unix.

Looks like the option you're looking for is /Fe


I wouldn't necessarily see a nefarious purpose behind that - it's more likely to be some compatibility-related thing (perhaps -o is interfering with some build system or the other used by some big Microsoft customer or the other.)

However, it is annoying when a compiler vendor throws away entrenched practices and learned reflexes.

But the (syntactical and philosophical) differences between the Microsoft compilers and the Unix compilers are bigger than a simple command line switch. To that end, you could try to step away from simple batch build scripts and towards Makefiles - or, better yet, an actual cross-platform build system such as CMake or SCons (please note that they're just examples, I'm not married to any of them :) ).