My friends and Colleagues were surprised with my UI skills no matter on WPF or Windows Form or Web applications. Most of my software could have much more beautiful than other software developers. I can not tell you what the exact reason is, but I can tell you I do NOT ONLY have bachelor’s degree of Computer Science with many years software development experiences. BUT ALSO I own 3D Animation Certificate from a popular Canadian Public College, I guess I have more sensitive feeling and better ideas on some art works than other software developers

I had a blog which was about my computer programming and 3D Animation stuff. There were lots of interesting content, but finally the blog was closed by 3rd party service. The possible reason was because I did not maintaining and updating long time.

The difference between fstream and fstream.h fstream is somewhat more restrictive than the older fstream.h. One would possibly avoid problems by careful use of namespaces, but it would be a lot smarter to stick with one or the other.

You should avoid using the *.h version as much as possible, because some implementations have bugs in their *.h version. Moreover, some of them support non-standard code that is not portable, and fail to support some of the standard code of the STL.

Furthermore, the *.h version puts everything in the global namespace. The extension-less version is more stable and it’s more portable. It also places everything in the std namespace.

Conclusion fstream.h is an old style method of including std C++ headers, and in opposite to fstream you don’t have to declare that you’re using the std namespace.

We have a C++ project based on Linux system, so we need a good Editor but not Visual Studio since the C++ is for Linux.

And, we do not want to use Ubuntu but just use Windows 7. So we decide to download Eclipse for C/C++ Windows Edition from Eclipse official site. (Note: our Windows 7 is 64-bit so we chose Eclipse 64-bit edition)

Please know also “[Canada] University of Waterloo Computer Science Club (http)” is the server for downloading Eclipse.

After you download, unzip it and double click eclipse.exe to run, but you might see the following error message:

Then just like install Eclipse for Java, we have to install Java runtime environment or JDK. Just check our posts for Eclipse for Java installation.

OK, we install JRE.

After JRE installation, we then can continue to install Eclipse for C/C++:

Specify a work folder:

After some while for installation process, the Eclipse install successfully.

In C++, there is no difference. It’s a holdover from C, in which it made a difference.

In C, there are two different namespaces of types: a namespace of struct/union/enum tag names and a namespace of typedef names. If you just said

struct Foo { … };Foo x;

You would get a compiler error, because Foo is only defined in the tag namespace. You’d have to declare it as

struct Foo x;

Any time you want to refer to a Foo, you’d always have to call it a struct Foo. This gets annoying fast, so you can add a typedef:

struct Foo { … };typedef struct Foo Foo;

Now both struct Foo (in the tag namespace) and just plain Foo (in the typedef namespace) both refer to the same thing, and you can freely declare objects of type Foo without the struct keyword. The construct

typedef struct Foo { … } Foo;

is just an abbreviation for the declaration and typedef. Finally,

typedef struct { … } Foo;

declares an anonymous structure and creates a typedef for it. Thus, with this construct, it doesn’t have a name in the tag namespace, only a name in the typedef namespace. This means it also can’t be forward-declared. If you want to make a forward declaration, you have to give it a name in the tag namespace.

In C++, all struct/union/enum/class declarations act like they are implicitly typedef’ed, as long as the name is not hidden by another declaration with the same name. See Michael Burr’s answer for the full details.