Wbudowany w Visual Studio system autouzupełniania kodu w przypadku C++ często działa całkiem dobrze, ale wiele osób pewnie stwierdziłoby, że częściej nie działa w ogóle. Każdy na pewno spotkał się z sytuacją, że po wpisaniu operatora kropki czy strzałki (->
) jego oczom nie ukazywała się wcale lista składników klasy, a jedynie mało pomocny komunikat na pasku stanu. Sugeruje on zapoznanie się z określonym artykułem w MSDN, traktującym o rozwiązywaniu problemów z IntelliSense.
Przyznajmy teraz: czy ktoś rzeczony rzeczywiście artykuł przeczytał? :) Mam co do tego spore wątpliwości, lecz od razu zapewniam: nic straconego. Nie ma tam bowiem nic specjalnie użytecznego ;> Nie istnieje niestety żaden specjalny trik, który sprawiłby, aby mechanizm autouzupełniania w VS dla kodu C++ działał co najmniej w połowie tak dobrze jak chociażby dla C#. Jeśli więc chcemy, by był on dla nas choć trochę użyteczny, musimy sami mu pomóc. Jak?
#define
‘y) wpływają na sposób, w jaki jest on przetwarzany. Przykładem może być dołączenie windows.h raz normalnie, a drugi raz z uprzednio zdefiniowanym makrem WIN32_LEAN_AND_MEAN
.Nie ma oczywiście gwarancji, że powyższe kroki sprawią, że IntelliSense poradzi sobie z podpowiadaniem w każdej sytuacji. Kod C++, zwłaszcza skomplikowany i korzystający z wielu “sztuczek językowych” (jak np. bibliotek Boost) nie jest łatwy do programowej analizy. Pozostaje więc mieć nadzieję, że w przyszłych wersjach VS z autouzupełnianiem będzie już lepiej; podobno w wersji 2010 jest z tym już całkiem nieźle :)
Hmm, w takim razie trzeba będzie przetestować 2010, a jeśli nie to zawsze pozostaje Visual Assists X.
dla mnie największym minusem intelisense w vs2008 było brak zsynchronizowania z mechanizmem precompiled headers’ów, a używam go praktycznie zawsze…
Otóż jak wiadomo z użyciem precompileada, w każdym pliku cpp na początku musi być #include “stdafx.h” (lub inna nazwa), bez względu na to gdzie plik stdafx.h względem danego pliku cpp leży, czyli jeśli w projekcie wszystkie pliki cpp NIE będą fizycznie w tym samym folderze, intelisense leży i kwiczy (oczywiście używając precompiled)…
w vs2010 jest już dobrze, aczkolwiek o ile jest dużo lepiej, nadal są lekkie niedociągnięcia, w postaci dziwnych afektów :>
Jedną z poważniejszych wad C++ jest to, że bardzo trudno (czyt. wolno) się go parsuje, bo ma dziwaczną gramatykę. Przez to bardzo ciężko zrobić porządne podpowiadanie kodu takie jak w C# albo w Javie. Jest w ogóle jakiekolwiek środowisko, w którym działa to szybko i zawsze poprawnie?
@pozy
kdevelop4 radzi sobie wspaniale nawet z boostem, niestety podpowiadanie kodu to chyba jedyne co tam działa :(
Dzięki, usunięcie pliku .ncb pomogło :)