4 ms·
Nice, but if the intention is portability my experience has unfortunately been that you pretty much have to stick to C99. MSVC’s C compiler is rough, but pretty
by dboon 11mo ago
Nice, but if the intention is portability my experience has unfortunately been that you pretty much have to stick to C99. MSVC’s C compiler is rough, but pretty much necessary for actual cross platform. I have my own such header which has many, many things like the OP’s. As much as I would find it constantly useful, I don’t have a cleanup utility because of this.
But if you can stay out of MSVC world, awesome! You can do so much with a few preprocessor blocks in a header
- Maxatar 11mo agoMSVC now supports C17.
- atiedebee 11mo agoDoes it support C99 with VLAs yet?
- hgs3 11mo agoIt supports C99 minus VLAs. Worth noting that only C99 mandates VLAs. They are optional in C11, C17, and C23.
- CyberDildonics 11mo agoMSVC is also made out of a dozen javascript processes which makes typing text need a beefy computer.
- electroly 11mo agoMSVC is a C++ compiler toolchain and it does not contain any JavaScript. You're thinking of VSCode, probably, but your comment was an off-topic rant either way.
- CyberDildonics 11mo agoMicrosoft visual studio the IDE (not vs code the electron program) has lots of javascript processes running in the background doing all sorts of things. Also my comment was a single sentence with a single fact so it can't be a rant.
- dboon 11mo agoMSVC is also completely different from Visual Studo. It’s OK to say you were wrong. You don’t have to be angry online. I promise!
- CyberDildonics 11mo agoMSVC is also completely different from Visual Studo It can and does refer to the IDE first. I'll prove it to your by showing that it's the first result of a search. https://duckduckgo.com/?q=MSVC&t=ffab&ia=web https://duckduckgo.com/?q=MSVC&t=ffab&ia=web https://visualstudio.microsoft.com/vs/features/cplusplus/ https://visualstudio.microsoft.com/vs/features/cplusplus/ It’s OK to say you were wrong. You don’t have to be angry online. I promise! Seems like projection. Since it's ok to be wrong I guess you'll reply with an apology.
- Dwedit 11mo agoThat's the nice thing about macros, you can also have the macro generate C++ code using destructors instead of using the cleanup attribute. As long as your other C code is also valid C++ code, it should work.
- 1718627440 11mo agoYou can use GCC on MS Windows just fine. Installing MSYS2 will also give you a package manager.
- dboon 11mo agoYes, of course. Unfortunately, sometimes you need to link to Windows binaries and therefore need to compile against the Windows ABI.
- 1718627440 11mo agoFrom https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html > -mabi=name Generate code for the specified calling convention. [...] The default is to use the Microsoft ABI when targeting Microsoft Windows and the SysV ABI on all other systems. > -mms-bitfields Enable/disable bit-field layout compatible with the native Microsoft Windows compiler. [...] This option is enabled by default for Microsoft Windows targets. Doesn't this work in practice, due to bugs?
- electroly 11mo ago(Not OP) The C++ ABI on Windows isn't compatible between g++ and MSVC, even though the C ABI is. Libraries using C linkage should work fine. MinGW-built programs link against the Microsoft C runtime (MSVCRT.DLL by default) which is itself MSVC-built, so linking MinGW programs to MSVC libraries has to work for anything to work.