Задать вопрос

Как запускать .cpp в VS раздельно?

К примеру, я пишу задачу в одной вкладке и мне нужно проверить один способ, но не затрагивая главный, я создаю новый элемент и когда нажимаю Ctrl+F5 для запуска и проверки он начинает компилировать все элементы.

xqw1ri13ncby.jpg

Вопрос: как осуществить запуск только отдельных элементов?
  • Вопрос задан
  • 5133 просмотра
Подписаться 5 Оценить Комментировать
Решения вопроса 2
@AlexP11223
Никак наверно, нельзя больше 1 main'а в одном проекте иметь. Можно закоментить main в одном и написать в другом. Или новый проект создать с этими файлами (файлы даже не копируются в новый проект при добавлении в него существующих).
Ответ написан
Teivaz
@Teivaz
Следует понимать что именно делает ви;уал студия когда ты просишь скомпилить проект. Три основных этапа:
Создание единиц трансляции
На этом этапе каждый компилируемый файл (*.cpp включённый в проект) обрабатывает препроцессор: подставляет вместо "#include" код из файлов, убирает код в блоках игнорирумых "#if", подставляет все макросы "#define" и удалит комментарии.
Кстати есть интересный финт с препроцессором, который немногие знают:
// words.h
"he", 
"she", 
"it"

// main.cpp
const std::string words[] = 
{
#include "words.h"
};

int main(int, char**)
{
std::cout << words[1];
return 0;
}

в результате будет
>>> she

Компиляция ресурсов. На данном этапе каждая единица трансляции компилируется в объектный файл с расширением ".obj".

Линковка. Она же компоновка. Исполняемый файл начинает выполнение с точки входа. Линковщику можно задать эту точку входа. По умолчанию в консольных приложениях винды это функция "main". Линковщик начнёт с того, что пройдётся по всем объектным файлам, найдёт эту функцию и начнёт с неё создавать ".exe" файл. Потом отыщет все функции, которые используются в программе, добавит их в исполняемый файл, а вызовы их имён заменит вызовами по соответствующим адресам.

Исходя из этого можно предложить несколько вариантов:
Использовать комментарии для переопределения точки входа.
Использовать препроцессор (#if #elif #else #endif).
Использовать разные точки входа линковщика.
Во время исполнения программы отслеживать устройство ввода (клавиатура, файл) и выполнять соответствующий участок кода.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Trrrrr
@Trrrrr
можно сделать excluded from build одному ццпшнику и создать разніе версии билда.
Или заюзать условную компиляцию #if defined(MAIN1) .... #endif
Ответ написан
Комментировать
@Kyberman
Можно создать несколько проектов в одном solution'е и компилировать только нужный проект.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы