2013-11-08 3 views
0

У меня есть отдельная папка для моих включений, потому что она является частью более крупного приложения, но я использую предварительно скомпилированные заголовки, чтобы сэкономить время. Однако это означает, что мне нужно 2 или более отдельных stdafx, учитывая, что я являюсь этими стандартными библиотеками в своих файлах заголовков.Может быть, stdafx должен находиться в одном каталоге?

+0

Не работая с VS в течение некоторого времени, я думаю, что заголовочный файл 'stdafx.h' должен находиться в том же файле, что и исходный файл' stdafx.cpp'. Я не помню, сколько из этих путей вы можете изменить, но вы можете изменить некоторые из них в настройках проекта. –

+0

Я успешно использовал '#include" ../ stdafx.h "' как единственную строку в вложенных файлах stdafx.h. – MSalters

ответ

1

Нет, это не работает правильно. Ваши собственные файлы заголовков НИКОГДА не должны ссылаться на «stdafx.h». Вместо этого они могут с уверенностью предположить, что они уже включены.

Если у вас есть несколько проектов в вашем решении, каждый в своем собственном каталоге, то каждый проект может содержать отдельный stdafx.h без проблем.

+0

Что делать, если у вас есть переменные, содержащие тип из stdafx? – bluejamesbond

+0

Например, D3DXVECTOR3 или ID3D10ShaderResourceView – bluejamesbond

+0

Я раскрыл вопрос здесь: http://stackoverflow.com/questions/19856420/does-stdafx-need-to-be-in-the-same-directory Пожалуйста, посмотрите, можете ли вы , – bluejamesbond

0

Не уверен, что это отвечает на ваш вопрос, но вы можете щелкнуть правой кнопкой мыши по stdafx.cpp в проводнике решений, а затем выбрать Precompiled Headers. В строке Precompiled header file вы можете ввести полный путь до stdafx.h.

Или открыть файл проекта и после

<ClCompile Include="stdafx.cpp"> 
    <PrecompiledHeader>Create</PrecompiledHeader> 

вставки

<PrecompiledHeaderFile>otherDirectory\stdafx.h</PrecompiledHeaderFile> 
Смежные вопросы