Как поддерживать includelevel в Visual Studio 2010 - PullRequest
0 голосов
/ 30 сентября 2011

В школе мы используем компиляторы c ++ / g ++ в Linux для поддержки includelevel. Это позволяет нам написать приложение, включить основное, которое подтверждает работу функций, а затем включить этот файл в другую программу для использования его функций. Теория состоит в том, что includelevel будет блокировать код, когда вы включаете, чтобы вы не дублировали вещи (например, наличие двух сетей). Есть ли способ заставить Visual Studio 2010 распознавать includelevel? При компиляции он просто говорит, что есть две сети (которые есть, но одна заблокирована с помощью уровня включения) и не компилируется. Я только что закомментировал код во включенном, чтобы он компилировался в VS2010, затем раскомментировал при отправке на школьный сервер (Linux) для компиляции для отправки. Пример: // файл: sort.cpp

#include <iostream>
using namespace std;

void BubbleSort(int arr[], int numitems, int &bcost);
    // Fancy sorting function description


#if __INCLUDE_LEVEL__ < 1
int main()
{
    //fancy program that proves the sorting function works
    return 0;
}
#endif

void BubbleSort(int arr[], int numitems, int &bcost) 
{
    // Fancy sorting function code
}

----------------------------------------------------------

// file: myapp.cpp

#include <iostream>
#include "sort.cpp"
using namespace std;

int main()
{
    //fancy application code that uses functions from the sort program
    return 0;
}

1 Ответ

0 голосов
/ 30 сентября 2011

Я полагаю, что вы пишете тесты в том же исходном файле, что и функции, которые они тестируют.

Хотя это может быть удобно для простой программы, когда она усложняется, стандартная практика заключается в извлечении тестовых функций в отдельный исходный файл и компиляции его в отдельный исполняемый файл теста (или в некоторых случаях DLL).

Простая структура, которую я использовал ранее, состоит в том, чтобы иметь проект библиотеки, который реализует основную функциональность, иметь другой проект, который содержит основную функцию и компилируется в «настоящую» программу, и иметь третий проект, который содержит тесты и его собственная основная функция, которая их запускает.

Также нестандартно включать файл источника / реализации (.cpp) из другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...