Мой компилятор Visual C ++ компилирует устаревший источник - PullRequest
4 голосов
/ 26 сентября 2010

Я новичок, начинающий использовать Microsoft Visual C ++ Express 2010 для программирования Windows.Я создал новое приложение C ++, используя собственный код, не управляемый или MFC.У меня была Visual Studio, которая создала для меня основной код Windows для создания одного окна с простыми меню (chat.cpp).Я изменил этот файл и смог правильно скомпилировать и увидеть, как мои изменения вступили в силу.

Теперь я добавил еще один исходный файл в решение (intro.cpp), который я включил в свой заголовок и вызвал изв чате.Кажется, это работает просто отлично, но с одной проблемой.Компилятор, кажется, не применяет мои изменения кода иногда: я делаю различные правки, перекомпилирую, и кажется, что «старый» код работает.Затем, через некоторое время, после того, как я сделаю только крошечную модификацию, компилятор, кажется, «догоняет» и запускает новый код, включая все предыдущие изменения, которые я сделал.

Есть ли какой-то кэш?Нужно ли указывать компилятору, какие файлы компилировать, а какие просто связать из объектных файлов?Я сделал ошибку, когда добавил файл в решение?

1 Ответ

1 голос
/ 26 сентября 2010

Есть ли у intro.cpp файл заголовка? это тоже в твоем решении?

Мне трудно представить, что в этой области такой зрелой IDE есть ошибка, поэтому я сначала изучу ваш список файлов. Убедитесь, что в обозревателе решений отображаются все файлы, которые вы добавили и редактируете. Это список, который VS использует для определения необходимости перестройки.

РЕДАКТИРОВАТЬ: Я признаю, что из вашего описания мне не ясно, почему он потерпит неудачу прямо сейчас. Однако, как правило, заголовочные файлы не содержат код, он работает наоборот (за исключением файлов заголовков шаблонов классов, таких как заголовки STL). Здесь обсуждается плюсы и минусы . Наиболее убедительный аргумент в пользу кода, включающего заголовки, а не наоборот, заключается в том, что файл заголовка содержит интерфейс , а файл кода содержит реализацию .

Я бы попытался реструктурировать ваш код в более традиционную структуру, где intro.cpp включает в себя intro.h и любые другие, которые ему нужны, и то же самое с chat.cpp. Тогда вашими модулями компиляции являются intro.cpp и chat.cpp, и они зависят от связанных заголовочных файлов, поэтому, если они правильно перечислены в SOlution Explorer, все должно работать. Вы можете очистить зависимости сборки, чтобы избежать дублирования и сократить время сборки, если у вас все работает так, как вы хотите.

...