В солюшене visual c++ может быть нескольно проектов. Каждый из них может формировать тестовый (или даже прикладной) exe-файл, а так же его cpp-файлы могут быть использованы в других проектах как компоненты.
В главном cpp-файле проекта объявляем процедуру с названием проекта, а в опциях проекта прописываем:
$(ProjectName)=main
Таким образом процедура становится main только если она совпадает с именем проекта (который должен быть уникален среди идентификаторов).
При сборке солюшена формируется exe, а cpp всё ещё может быть использован в другом проекте со своим main.
Пример процедуры:
int супер_уникальное_имя_проекта()
{
std::cout << "Hello World!\n";
return 0;
}