Почему значения enum доступны вне блока, в котором перечисление определено в C, но не в С++?
Рассмотрим следующую программу C.
#include <stdio.h>
struct mystruct
{
enum {INT, FLOAT, STRING} type;
int integer;
float floating_point;
} tu;
/* Why is INT accessible here? */
int main()
{
tu.type = INT;
tu.integer = 100;
return 0;
}
Он компилируется и отлично работает в C.
Но в С++ это не скомпилировано.
#include <iostream>
struct mystruct
{
enum {INT, FLOAT, STRING} type;
int integer;
float floating_point;
} tu;
/* Why is INT accessible here? */
int main()
{
tu.type = INT;
tu.integer = 100;
return 0;
}
[Ошибка] 'INT' не был объявлен в этой области
Существуют ли правила перераспределения и области видимости в C и С++?