I\'ve always been a little confused about what\'s going on here:
#include
int main() {
timeval tv;
tv.tv_sec = 1;
for (;;) {
I would say it's a design decision of both languages.
Structs in C are just structured records and have different usage then built-in type.
C++ has ctors and operator overloads and so they act as types.
struct foo x; // create a structure of pattern foo
typedef foo foo_type; // "define" a type
foo_type x; // create an instance of type foo_type
C++:
foo x; // create an instance of type foo
As a side-note, struct foo is still allowed in C++. struct foo is easier to parse then typedef'dfoo as the name-lookup is simpler.