Почему в VC6,7 не компиляется такой код:
От: Зазнобин Василий Россия  
Дата: 11.04.02 10:18
Оценка:
int _tmain(int argc, _TCHAR* argv[])
{
    struct A
    {
    };
    struct B
    {
        void f(A a)
        {
            A aa;//: error C2065: 'A' : undeclared identifier
        }
    };

    A a;
    B b;
    b.f(a);

    return 0;
}


Это проблема VC или не положено по стандарту?
Если по стандарту, то почему?
Если проблема, то у какого кмпилятора ее нет?
Re: Почему в VC6,7 не компиляется такой код:
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 11.04.02 10:30
Оценка:
Здравствуйте Зазнобин Василий, Вы писали:

Глюк наверное.

Зато работает так:
void main()
{
  struct A
  {
  };
  struct B
  {
    typedef A A;
    void F (A a)
    {
      A aa;
    }
  };
}
Re[2]: Почему в VC6,7 не компиляется такой код:
От: Кодт Россия  
Дата: 11.04.02 11:31
Оценка:
Здравствуйте DarkGray, Вы писали:

DG>Глюк наверное.


DG>Зато работает так:

DG>
DG>void main()
DG>{
DG>  struct A
DG>  {
DG>  };
DG>  struct B
DG>  {
DG>    typedef A A;
DG>    void F (A a)
DG>    {
DG>      A aa;
DG>    }
DG>  };
DG>}
DG>


Это, наверное, компилятор сэкономил. Мол, если класс не используется, нафига его компилить...
Перекуём баги на фичи!
Re[3]: Почему в VC6,7 не компиляется такой код:
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 11.04.02 11:36
Оценка:
Здравствуйте Кодт, Вы писали:

К>Это, наверное, компилятор сэкономил. Мол, если класс не используется, нафига его компилить...


В смысле?



Такой код тоже компилится
  void main()
  {
    struct A
    {
    };
    struct B
    {
       typedef A A; 
        void f(A a)
        {
            A aa;//: error C2065: 'A' : undeclared identifier
        }
    };
    A a;
    B b;
    b.f(a);
  }


После вставки typedef-а все собирается
Re[2]: Почему в VC6,7 не компиляется такой код:
От: Roland Россия  
Дата: 11.04.02 11:38
Оценка:
Здравствуйте DarkGray, Вы писали:

спс...

кстати Borland 5.5 кажись не ругается...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.