Overview
Visual Studio Express is licensed for distributing ONLY compiled programs as binary executables, but you are NOT allowed to distribute the source code of your program.
also, Visual Studio Express 2012 is the first express compiler that took away the ability to compile for other platforms except for windows 8 metro.
for this reason Visual Studio Express or Visual c++ Express is NOT for:
- Open Source Software developers who must make available their SOURCE CODE with their program.
- students in college who must submit their sample compiled programs and at least their SOURCE CODE.
Recommendation
I think the $800+ pay-for Microsoft Visual Studio Professional (and it's a good idea to get the MSDN if you can afford it) is the better choice for a compiler IF you are going to get a microsoft compiler. the Express version is intended only as a 30-day trial apparently. Why don't they just come out and say "Trial version" instead of fooling people?
if your compilation exceeds the maximum size allowed by your installer, and one of the requirements of your program is to include msvcrt90.dll, or another microsoft redistributable part/component/dll/whatever, you can't use the microsoft compiler to make your product. some of my office packages fit this description, so now I know to not use a microsoft compiler for it, plus there is the fact that it is open source (see OSS below).
write Open Source Software with Visual Studio?
I don't think this compiler has the limitation of not allowing you to compile and release Open Source Software - MAYBE - but the license says you have to "protect the code as much as the VS license protects microsoft's product". in other words, you have to use microsoft's license on your product. so I guess is that might kick out any Open Source Licensing, because if you read microsoft's license, it protects microsoft's code from reverse engineering, etc. GPL and any of the other open source licenses don't do that, but instead just might encourage that.
students?
students have the same problem as Open Source Software guys (see above). they must distribute the source code of their programs with their executables.
use one of the forms of gcc (mingw-w64, code::blocks, devc++, mingw, gcc and g++ (on ubuntu/mint you may have to do sudo apt-get install g++). If you can afford the $4000 or so, get the Embarcadero compiler (you can build serious apps with that on mac and pc, and it could make for your own business, but be sure to take accounting classes, accounting is a nightmare without it).
libraries
packing structs with no holes
by default, the compiler will leave holes in your user-defined structs. to prevent this, use #pragma pack(). this is available on both gcc and VC++ and because it's on VC++, it's probably also on Borland.