Почему в C нужно ключевое слово "struct", а не в C++?

Я всегда немного не понимал, что здесь происходит:

#include <stdio.h>

int main() {  
    timeval tv;
    tv.tv_sec = 1;

    for (;;) {
        select(0, 0, 0, 0, &tv);
        printf("%s\n", "Hello World!");
    }
}

Извините, если это не компилируется, просто написал это как быстрый пример.

Код, подобный этому, не компилируется в gcc, если я не добавлю ключевое слово struct перед использованием struct timeval. g++, с другой стороны, обрабатывает его нормально, как есть.

Это разница между тем, как C и C++ обрабатывают структуры, или это просто разница в компиляторах? (Я очень ориентирован на C++, и использование struct в C в таких строках, как эта, всегда меня несколько озадачивало).

40
задан John Humphreys - w00te 7 December 2011 в 21:24
поделиться