Autouzupełnianie przy typeof

0

Witam!

Mam strukturę, która jest spora i nie ma sensu jej rozbijać, przykładowo:

struct Foo1{
    struct{
        struct{
            int a;
            int b;
        }Foo3;
    }Foo2;
};

Chciałbym teraz zdefiniować strukturę Foo3 w swoim kodzie, robie to tak:

#define Foo1 (*((struct Foo1*)0))

typeof(Foo1.Foo2.Foo3) foo;

Wszystko pięknie się kompiluje i działa.
Problem pojawia się gdy wpisuję:

foo.

to brakuje autouzupełniania w QT...

Jest możliwość innego zapisu, tak aby tego problemu nie było?
Czy u Was w innych środowiskach jest podobnie?

Cały kod:

struct Foo1{
    struct{
        struct{
            int a;
            int b;
            int c;
        }Foo3;
    }Foo2;
};

#define Foo1 (*((struct Foo1*)0))

int main(){
    typeof(Foo1.Foo2.Foo3 /* tutaj autouzupełnianie działa */) foo;

    //foo.? // <- brak autouzupełniania w Qt

    foo.a = 69;

    return 0;
}
0

W Eclipse działa autouzupełniane tego ustrojstwa.

Eclipse Platform

Version: 3.8.1
Build id: debbuild
0

Qt Creator ma 2 moduły do kompletacji kodu: swój własny (do C++), i plugin do clanga. Najwyraźniej nie obsługują typeof, gdy C++ ma decltype i auto.

0

Dzięki krzaq.

decltype w QT też nie ma autouzupełniania.

Da się coś z tym fantem w QT zrobić?
Czy jest inny mechanizm ala typeof,decltype?
Zawsze można walnąć makra żeby był wybierany odpowiedni do środowiska/kompilatora.

Da się zmienić na plugin który to ogarnie?

Zorientowałem się że mam starego QtCreatora, ale w najnowszym jest to samo...

0

Hej!

Udało mi się dotrzeć do opcji i ustawić plugin Clang, wszystko działa, lecz dzieją się takie cuda:
clang_qt.png

W okienku o błędach/warningach nic nie ma.

Ustawienia:
clang_qt_settings.png

Co co się dzieje?

1

Nic się nie dzieje. Nie wolno czegoś takiego robić w C++ - nie ma flexible array member.

Jeżeli to ma być kod C, to najwidoczniej QtCreator o tym nie wie (pokazujesz ustawienia C++).

1 użytkowników online, w tym zalogowanych: 0, gości: 1