I’m new to C(coming from Java, so I’m not learning programming for the first time). I’m reading the book, “C Primer Plus”. I’ve been searching around to understand the differences between compilers or environments to develop C programs on Windows.
I have installed MinGW and Visual Studio 2010. I have tested compiling a hello world on both environments. For MinGW, I’m considering Code::Blocks or vim. The multi compiler support on Code::Blocks sounds convenient, but I’m not at that level to comprehend how helpful this feature would be.
I’m willing to learn C the way I should be instead of being spoiled by letting the works done background hidden by IDE like Visual Studio. Once I improve my understanding, I don’t mind switching to a more convenient environments.
The reason I feel uncomfortable with Visual Studio is that it doesn’t support the standards as much as gcc. I have read an argument that VS is used widely in production and that this is just the way it is. Some people say just start writing C wherever which is what I don’t want. I’ve seen some say experience the command prompt and see how the linking is done, etc.
This is from Wikipedia, but it says that Visual C++ shouldn’t be used for compiling C. http://en.wikipedia.org/wiki/Visual_C%2B%2B#Issues
So here is what I need to make clear. It might be a few blocks.
My understanding is that Visual Studio is appropriate as long as I’m developing for Windows platform and also good for people who just want to start coding.
If I want to go with the more up-to-date standards and use gcc (which is used in Linux), I should go for MinGW. MinGW is the minimum gcc-like environment ported to Windows, so I can use the similar environment to Linux which benefits me for the standards better supported than VS. Also, this is supposed to help my program to be compiled more successfully on Linux and not exactly for compiling a program on Windows MinGW to run on Linux, right?
The portability we talk about is compiling a source code on each platform and not to compile a program on one particular platform to use the executed file on other platforms, correct?
Whilst Visual C++ isn’t a C compiler, the Visual studio tools do allow compiing C code – the compiler under the Visual Studion is what is used to compile almost all of Microsofts C code (and there is A LOT of C code in a Microsoft Windows system, even if a fair chunk of the newer tools may be C, the basis for a lot of things is still C). You just have to ensure that you compile C as C, not as C++, since C++ has slightly different flavours of some things – some things that are allowed in C aren’t in C++.
The way to do that is to call the file something.c, rather than something.cpp – it REALLY is that easy.
gcc is also a very competent compiler, absolutely no doubt about that. And using the tools in Code::Blocks etc will be a good way to learn.
I would actually say that Visual studio is definitely a smoother, slicker environment, and you can still use command-line tools like make to build things if you like – the compiler isn’t part of the IDE, it’s just a nicely integrated IDE. Learning a computer language should have as few obstacles as possoible. Making life hard for yourself is no help.
I personally use (x)emacs and gcc on Linux, but the first time I programmed in C, there wasn’t even a proper standard for it, and computers typically had 8- or 16-bit processors – our school computer in 1985 had 2MB of ram and 3 disks of 64MB each (131000 something blocks of 512byte). That machine had 8 terminals in my school, 8 more terminals in another school, and the main school where the actual computer was had two rooms with, I think 16 terminals in each. So we sometimes shared the machine between 30 people!