unnamed struct компиляция gcc
От: pro_nn  
Дата: 10.11.02 08:18
Оценка:
При компиляции под gcc можно реализовать такую конструкцию?

class CFoo
{
public:
    CFoo(){};
    ~CFoo(){};
    union 
    {
        struct {int x; int y;};
        int a[2];
    };
};

gcc пишет anonymous class type not used to declare any objects.
под VC.net компиляется.
прошу прощения если вопрос не в тему это мой первый опыт программирования под unix.

Yuri.
---
Microsoft, Windows(tm), MustDie! — зарегистрированые торговые знаки корпорации Microsoft
Re: unnamed struct компиляция gcc
От: pro_nn  
Дата: 10.11.02 08:29
Оценка:
сори, конечно используется g++ а не gcc.
Re: unnamed struct компиляция gcc
От: White Eagle Россия  
Дата: 11.11.02 14:12
Оценка:
Здравствуйте pro_nn, Вы писали:

PN>При компиляции под gcc можно реализовать такую конструкцию?


У меня твой код компилится, gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
Какая версия gcc у тебя?
Вроде как unnamed unions — документированное расширение gcc. Так что должно работать.
Никогда не делайте ничего правильно с первого раза, иначе никто потом не оценит, как это было сложно.
Re[2]: unnamed struct компиляция gcc
От: pro_nn  
Дата: 12.11.02 15:07
Оценка:
Здравствуйте White Eagle, Вы писали:

WE>Какая версия gcc у тебя?

WE>Вроде как unnamed unions — документированное расширение gcc. Так что должно работать.
gcc version 2.95.3 20010315 (release)
отдельно unnamed union и unnamed struct компилируются, а вложенные нет.
Re[3]: unnamed struct компиляция gcc
От: White Eagle Россия  
Дата: 13.11.02 10:15
Оценка:
Здравствуйте pro_nn, Вы писали:
PN>gcc version 2.95.3 20010315 (release)
PN>отдельно unnamed union и unnamed struct компилируются, а вложенные нет.

Странно что вообще компилятся, вроде не должны.
Апгрейдься — если у тебя Red-Hat — то на 2.96 , иначе на 3.*
(наверно 3.2 лучше всего) — всё будет.
Никогда не делайте ничего правильно с первого раза, иначе никто потом не оценит, как это было сложно.
Re[4]: unnamed struct компиляция gcc
От: pro_nn  
Дата: 13.11.02 10:58
Оценка:
Здравствуйте White Eagle, Вы писали:
WE>Странно что вообще компилятся, вроде не должны.
WE>Апгрейдься — если у тебя Red-Hat — то на 2.96 , иначе на 3.*
WE>(наверно 3.2 лучше всего) — всё будет.
к сожалению надо именно под эту версию.
аналогичного решения с другой конструкцией придумать не смог, прочто убрал a[2], jcnfdbk njkmrj x, y. Функциональность класса конечно уменьшилась, но не фатально.
Спасибо за помощь.
Re: unnamed struct компиляция gcc
От: KA it-knowledge-base.blogspot.com
Дата: 18.11.02 15:27
Оценка:
Здравствуйте, pro_nn, Вы писали:

PN>
PN>class CFoo
PN>{
PN>public:
PN>    CFoo(){};
PN>    ~CFoo(){};
PN>    union 
PN>    {
PN>        struct {int x; int y;};
PN>        int a[2];
PN>    };
PN>};

PN>

PN>gcc пишет anonymous class type not used to declare any objects.
PN>под VC.net компиляется.

[skipped]

Предлагаю ваще отказаться от union, а использовать ссылки, т.е. код следующий
class CFoo
{
public:
  CFoo():x(a[0]),y(a[1]) {} //Инициализация ссылок 
  int a[2];
  int& x;
  int& y;
};


Код, использующий это, получится тот же самый
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.