[QUOTE=jA_cOp;23978391]I'm pretty sure the extern "C" {} part of MSVC++ works just fine... any specific incompatibilities you can think of?[/QUOTE]
The C99 standard includes a number of integer types that I really like to use in structure definitions, as they're far more specific than the "normal" types. "int", as I'm sure you're well aware, isn't guaranteed to be 32-bits, and most of the other types are equally ambiguous. This can be a real problem when you want to read/write binary files or support many architectures.
Rather than drowning the header/source files in preprocessor junk, a C programmer can choose to include "stdint.h" and use the types it provides.
MSVC will not understand these types. So when I go and try to use my C library which has headers with definitions like
[code]typedef struct file_header {
uint32_t magic_number;
uint16_t version;
uint16_t header_size;
} file_header_t;[/code]
MSVC isn't going to understand it at all.
This might sound like a minor nitpick (why not simply define them manually?), but it is only one of many issues. If your headers include a lot of preprocessor macros and inline functions, the quantity and complexity of C code that a C++ compiler has to understand is greatly increased. I would think the reason you don't have problems doing "extern "C" { #include <whatever.h> }" is because library authors actually go out of their way to make things work with MSVC, just as web developers go out of their way to support IE.
Although I extensively use the stdint header, I rarely get that problem because I almost never define structs in headers, only declare them. You could include stdint.h and cstdint from boost, anyway, if you wanted to get a library working with MSVC.
Notice how C wasn't mentioned in the OP
[QUOTE=ROBO_DONUT;23978590]The C99 standard includes a number of integer types that I really like to use in structure definitions, as they're far more specific than the "normal" types. "int", as I'm sure you're well aware, isn't guaranteed to be 32-bits, and most of the other types are equally ambiguous. This can be a real problem when you want to read/write binary files or support many architectures.
Rather than drowning the header/source files in preprocessor junk, a C programmer can choose to include "stdint.h" and use the types it provides.
MSVC will not understand these types. So when I go and try to use my C library which has headers with definitions like
[code]typedef struct file_header {
uint32_t magic_number;
uint16_t version;
uint16_t header_size;
} file_header_t;[/code]
MSVC isn't going to understand it at all.
This might sound like a minor nitpick (why not simply define them manually?), but it is only one of many issues. If your headers include a lot of preprocessor macros and inline functions, the quantity and complexity of C code that a C++ compiler has to understand is greatly increased. I would think the reason you don't have problems doing "extern "C" { #include <whatever.h> }" is because library authors actually go out of their way to make things work with MSVC, just as web developers go out of their way to support IE.[/QUOTE]
There are various stdint.h headers that work just fine with MSVC, [url=http://msinttypes.googlecode.com/svn/trunk/stdint.h]like this one[/url].
MSVC also defines those types, just with different names.
I myself have had a lot of experence with microsoft's visiul stuido, though the thing I do not like is if you use it you are forced into creating a brand new project. I have recently switched over to gcc and gedit for this and other reasions such as the perfect linking built in
Real men use Vim.
real men program their own ide and compiler
Magnetised needle
Butterflies
etc.
[QUOTE=efeX;23978984]Notice how C wasn't mentioned in the OP[/QUOTE]
This
Talk about derailed
[QUOTE=efeX;23978984]Notice how C wasn't mentioned in the OP[/QUOTE]
Notice how C++ wasn't mentioned either, and what they are talking about is MSVC's (MSVC being an IDE) support of C, which is perfectly within topic.
I also hate MS's IDEs - Installed VC and got like 15-20 added programs in my installed programs list. Horrible. And I dont use a single one of those: Microsoft SQL Server, Microsoft Windows SDK for Visual Studio, Microsoft CCR and DDS Runtime, ...
I usually use Code::Blocks (because I develop cross-platform, and it's always nice to have the same, familiar IDE whatever you're working on) but I don't dislike MSVC's stuff. It makes projects that are based on the Windows API so much easier.
[editline]01:35PM[/editline]
[QUOTE=sim642;23984541]I also hate MS's IDEs - Installed VC and got like 15-20 added programs in my installed programs list. Horrible. And I dont use a single one of those: Microsoft SQL Server, Microsoft Windows SDK for Visual Studio, Microsoft CCR and DDS Runtime, ...[/QUOTE]
You do know you can choose not to install those, yeah? You untick the boxes when you're installing. If you just blindly went ahead clicking "YES NEXT NEXT I AGREE NEXT YES FINISH" then you probably shouldn't be programming at all.
[QUOTE=gparent;23976749]Yeah, VS is one of the few MS products I think they did well.[/QUOTE]
Yea and windows Vista [/sarcasm]
[QUOTE=bobthe2lol;23974815]They're just so cluttered and messy, and have a very steep learning curve. For instance, I like Java, so I thought that C# was sort of like Java, so I went and downloaded visual C# 2010 express. Now, what I use for Java is Net Beans. So I go to open the IDE for VCS and [b]I'm[/b] like... [b]What[/b] the shit? So I make a new project, and [B]it's[/B] just utterly confusing[B].[/B] and as far as [B]I[/B] can tell, Microsoft has no 'getting started' tutorials for [B]their[/B] IDE.
[/rant][/QUOTE]
:eng101:
Head over to C# Corner for "Getting Started Tutorials". Buy Headfirst C#
[QUOTE=robowurmz;23984574]
You do know you can choose not to install those, yeah? You untick the boxes when you're installing. If you just blindly went ahead clicking "YES NEXT NEXT I AGREE NEXT YES FINISH" then you probably shouldn't be programming at all.[/QUOTE]
Unticking nearly everything still leads to a lot of clutter in the add/remove programs menu. It's just a fact that VS has a lot of dependencies.
[QUOTE=ROBO_DONUT;23977539]How does this prove any of my statements wrong?[/QUOTE]
Because a C++ compiler isn't a C compiler.
You can't say a C++ compiler sucks because it doesn't support the latest C standards.
Therefore, your argument that "the compiler sucks" is incorrect. "the compiler, when used for C, sucks" is correct, however.
[QUOTE=nullsquared;23985140]Because a C++ compiler isn't a C compiler.
You can't say a C++ compiler sucks because it doesn't support the latest C standards.
Therefore, your argument that "the compiler sucks" is incorrect. "the compiler, when used for C, sucks" is correct, however.[/QUOTE]
You can, however, say that VS sucks because it doesn't have a decent C compiler. And since it doesn't play nice with external compilers (as far as I'm aware), it's an issue indeed.
[QUOTE=blankthemuffin;23985213]You can, however, say that VS sucks because it doesn't have a decent C compiler.[/QUOTE]
Uh, I guess, but does Microsoft even mention anything about C? I mean, if they mention C, then by all means you could say that. But if they never mention C at all, then you can't really blame them.
[QUOTE=bobthe2lol;23974815]They're just so cluttered and messy, and have a very steep learning curve. For instance, I like Java, so I thought that C# was sort of like Java, so I went and downloaded visual C# 2010 express. Now, what I use for Java is Net Beans. So I go to open the IDE for VCS and i'm like... what the shit? So I make a new project, and its just utterly confusing, and as far as i can tell, Microsoft has no 'getting started' tutorials for there IDE.
[/rant][/QUOTE]
You just don't know what you're doing. I coded in Java using Eclipse for 3 years and when I switched to C++ using the Microsoft Visual C++ IDE I felt right at home, same for Visual C#, never really bothered learning Visual Basic :v:
And I never had any problems compiling C code in VC++...
[QUOTE=nullsquared;23985269]Uh, I guess, but does Microsoft even mention anything about C? I mean, if they mention C, then by all means you could say that. But if they never mention C at all, then you can't really blame them.[/QUOTE]
Yeah, they mention that C is legacy and don't use it. I'm blaming them for not including a feature (C support), and also for not allowing one to easily customise the IDE for their own needs (C support fits in there too).
[QUOTE=blankthemuffin;23986208]I'm blaming them for not including a feature (C support)[/quote]
Okay well that's more of an opinion rather than a fact considering you can always say "X sucks because it doesn't do Y".
[quote]and also for not allowing one to easily customise the IDE for their own needs (C support fits in there too).[/QUOTE]
I don't understand why Microsoft would purposely make it easy for their compiler to be swapped out :P
[QUOTE=nullsquared;23986327]
I don't understand why Microsoft would purposely make it easy for their compiler to be swapped out :P[/QUOTE]
Because it's the logical thing to do when your marketing team isn't above the CEO in power. Unfortunately, that's exactly why they don't make it easy.
[QUOTE=gparent;23986353]Because it's the logical thing to do when your marketing team isn't above the CEO in power. Unfortunately, that's exactly why they don't make it easy.[/QUOTE]
What? Do you have any sort of source that I could read regarding that?
[QUOTE=nullsquared;23986370]What? Do you have any sort of source that I could read regarding that?[/QUOTE]
It isn't meant to be taken literally. Why else would they not make it easy to swap compilers except vendor lock-in, really?
Well it makes perfect sense if you're going to do silly things like not support C.
[editline]12:46AM[/editline]
And as far as I know, it's not like people buy Visual Studio specifically for the compiler, it's not an amazing piece of engineering or anything. So more flexibility might mean more people would find it useful.
[QUOTE=gparent;23986390]Why else would they not make it easy to swap compilers except vendor lock-in, really?[/QUOTE]
I dunno; I guess they just want to make sure people use the whole of their product, rather than just taking pieces of it.
[QUOTE=nullsquared;23986437]I dunno; I guess they just want to make sure people use the whole of their product, rather than just taking pieces of it.[/QUOTE]
Exactly. :D
[QUOTE=nullsquared;23986327]Okay well that's more of an opinion rather than a fact considering you can always say "X sucks because it doesn't do Y".
I don't understand why Microsoft would purposely make it easy for their compiler to be swapped out :P[/QUOTE]
Why not?
All you should have to tell VS is what command to use for another compiler. If you want to use MinGW, there should be an option somewhere to type in gcc.exe as your compiler.
[QUOTE=Inside;23979056]There are various stdint.h headers that work just fine with MSVC, [URL="http://msinttypes.googlecode.com/svn/trunk/stdint.h"]like this one[/URL].
MSVC also defines those types, just with different names.[/QUOTE]
That's not compatibility though, that's a work around. His point is it doesn't support it without modification.
[editline]09:37PM[/editline]
[QUOTE=nullsquared;23986327]Okay well that's more of an opinion rather than a fact considering you can always say "X sucks because it doesn't do Y".
I don't understand why Microsoft would purposely make it easy for their compiler to be swapped out :P[/QUOTE]
I'm pretty sure it's considered a 'missing feature' when software of the same type support a feature yours doesn't. And both of those fall under that category.
VS is the best editor for Microsoft products (read: C#): Best intellisense ever (period), intellitrace, interactive debugging, etc, etc. Sure, it's kinda complicated at first (OK, I'm lying, I got it about 45 seconds after I started it for the first time) but once you get used to it it's amazing. SharpDevelop & co are about 10 years behind.
If, [I]however[/I], you ever get it into your mind to do [U]serious[/U] HTML, CSS, etc coding in it you'll go mad, guaranteed. Other IDEs do those other things much better.
Sorry, you need to Log In to post a reply to this thread.