Вопрос по интерфейсу (работа Intellisence) и пару сопутствующих...

Тема в разделе "MS Visual C++", создана пользователем alexroot, 6 май 2008.

  1. alexroot

    alexroot Гость

    Установил Visual Studio

    (более подробно
    Microsoft Visual Studio 2008
    Visual Studio Team System 2008
    Version 9.0.21022.8 RTM
    ).

    До этого стояла Microsoft Visual Studio .NET 2003.

    Собственно проблемма (извините заранее за некоторые оплошности в терминологии):

    В Visual Studio есть так называемая система Intellisense
    которая в частности помагает работать с объектами.
    Например поставив точку после названия объекта получаем список доступных методов и членов объекта
    (появляется вспомагательное окно-список, из которого сразу можно выбрать необходимый метод или член
    дабы не копаться по файлам в поиске их точного названия).
    Это очень удобно, и проблемма возникла именно в том,
    что Intellisense в моем случае почемуто не работает в свежеустановленной Microsoft Visual Studio 2008.
    Вернее она наверное работает, но почемуто хуже чем в Microsoft Visual Studio .NET 2003.

    Описываю более точно условия возникшей проблеммы.

    Имеем шесть файлов (приложение - консольное):
    1. main.cpp - файл с функцией main ()
    2. main.h
    3. model.cpp - файл с некоторыми функциями работы над данными
    4. model.h
    5. data.cpp файл с описанием классов - контейнеров хранения данных
    6. data.h

    Файлы data.cpp и data.h используются и в файле model.h и в файле main.h,
    т.к. в качестве аргументов функций классов, используемых в model.h и в файле main.h,
    являются классы-контейнеры описанные в data.h и data.cpp.
    Таким образом, при компиляции проекта будут ошибки переобъявления классов и функций,
    которые находятся в data.h и data.cpp, т.к. в файлах main.h и model.cpp
    есть строка

    Код (Text):
    #include "data.h"
    Почитав литературу, обнаружил прекрасный выход из этой ситуации:
    в файлах main.h и model.h пишем такой код

    Код (Text):
    #ifndef DATA
    #define DATA
    #include "data.h"
    #endif
    и никаких проблемм с Intellisense в предыдущей версии Microsoft Visual Studio .NET 2003 небыло.
    А вот в 2008м - есть проблемма, Intellisense категорически отказывается работать.
    Хелп я читал, файл .ncb грохал, пересобирал - ничего не помагает.

    Конечно, если работать только с одним файлом, тоесть компилировать только model.cpp
    и в нем закоментировать строки

    Код (Text):
    //#ifndef DATA
    //#define DATA
    #include "data.h"
    //#endif
    то Intellisense для этого файла работает. Но это ненужная трата времени, тем более в 2003-м все почемуто работает.

    Очень прошу пояснить как выйти из подобной ситуации чтобы постоянно не закоментировать
    указанные строки для работы с отдельными файлами и не раскоментировать их при необходимости
    компиляции всего проекта.


    з.ы. Кроме того обнаружил такой глюк нехороший,
    при нажатии на на иконку "Find in files" - вижуал студио вылетает.

    С уважением, Александр.
     
  2. Yason

    Yason Гость

    К сожалению, по сути вопроса сказать могу немного, но логичнее было бы вписать защиту от многокатного инклуда в сам .h файл (так по умолчанию делает BCB):
    Код (Text):
    (файл data.h)
    #ifndef DATA
    #define DATA
    //
    // ...Содержимое data.h...
    //
    #endif

    (файлы, использующие data.h)
    #include "data.h"
     
  3. alexroot

    alexroot Гость

    Yason

    Вы подсказали решение, которое полностью удовлетворило VS и решило проблему.

    Спасибо что вникли в проблему и дали решение. Очень благодарен!
    Сам я не додумался :(

    На данный момент пробовал свой предыдущий проект в VS 2003 - Intellisense работает.
    К сожалению в VS 2008 - не работает.

    С Вашим вариантом избежания многократного инклуда - Intellisense заработал и в 2008м VS.


    С уважением, Александр.

    з.ы. к сожалению репутацию изменить не могу в виду малого количества моих сообщений.
     
Загрузка...
Похожие Темы - Вопрос по интерфейсу
  1. Gor
    Ответов:
    5
    Просмотров:
    2.777
  2. ApplePen
    Ответов:
    0
    Просмотров:
    63
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    94
  4. kartaman
    Ответов:
    0
    Просмотров:
    128
  5. Peter
    Ответов:
    4
    Просмотров:
    524

Поделиться этой страницей