Visual Studio 2008 C ++ не будет компилировать изменения в классе заголовка

0

У меня очень странная проблема в Visual C++ 2008:

Мой проект содержит некоторые классы, которые я разрабатываю, и я не включаю в прекомпилированный заголовок stdafx.h, поскольку они еще не закончены (EDIT они включены в файл main.cpp, после stdafx.h)

Когда я вношу изменения в класс с файлами.h и.cpp, изменения применяются правильно.

Когда я вношу изменения в класс, который имеет только файл.h, VC2008 обнаруживает там ошибки, но если все идет правильно, он запускает программу, и класс не обновляется. Доказательство этого состоит в том, что если я устанавливаю точку останова где-то в классе, это не останавливается на достигнутом, и точка останова появляется с предупреждением, говорящим, что "нет исполняемого кода, связанного с этой линией".

EDIT Я попытался включить заголовочный файл в stdafx.h, и поведение будет одинаковым: изменения не применяются.

То, что я делаю прямо сейчас, - это очистить проект перед запуском снова. Иногда я теряю много времени, если забываю очистить, потому что мне нужно достичь большого процесса, чтобы достичь и проверить изменения, тогда я вижу, что я не могу отлаживать и должен останавливаться, чистить, запускать и достигать изменений!

Любое решение не нужно очищать проект раз и навсегда?

  • 0
    Вы не можете отлаживать код, который не включен в текущий исполняемый файл, который вы запускаете. Когда вы говорите, что VS2008 обнаруживает ошибки, вы имеете в виду, что intellisense обнаруживает ошибки? Мне было бы очень странно, если бы компилятор выдавал вам ошибки в коде, который вы не включили в проект.
  • 0
    Код включен точно, поскольку я достигаю точек останова там, и код файла выполняется. Когда я говорю VS2008 обнаружить ошибки, я имею в виду во время компиляции
Теги:
visual-studio-2008
compilation

1 ответ

0

Просто для любопытства я пошел глубже в этом вопросе. Очень странное поведение:

Когда изменения производятся только в частной функции члена класса из класса заголовка без файла.cpp, который включен в stdafx.h (предварительно скомпилированный), компилятор не будет применять изменения!

Это не будет применяться, если изменения сделаны в конструкторе, общедоступных методах, переменных или в определениях подструктуры/класса.

Если это имеет смысл для кого-то, это будет действительно хорошим ясным объяснением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню