Относительно № 3 - убедившись, что он переносим на ПК, вот стратегия, которую я использую:
Сначала просмотрите встроенный код и измените любое значение int или unsigned long на int16.
или 'uint32' (или любое другое соглашение, которое вы выберете).
Обертка раздела во встроенном заголовке, где вы определяете типы внутри условия:
#ifndef CORE_TYPE_DEFINITIONS
#define CORE_TYPE_DEFINITIONS
typedef long int16;
/*...*/
#endif
создайте файл "PC_Types.h", который определяет те же типы для ПК.
#ifdef CORE_TYPE_DEFINITIONS
#error "Core Types already defined"
#else
#define CORE_TYPE_DEFINITIONS
typedef short int16;
/*...*/
#endif
В проекте для ПК создайте оболочку для каждого встроенного файла c, которая содержит следующее:
#include "PC_Types.h"
#include "ModuleX.c" //the file under test
#include "TestHarness.h" //verification functions
int TestModuleXUnit1(void)
{
/* setup */
/* call Unit1(); */
/* verify post-conditions */
return result;
}
Оборачивая каждый файл, вы получаете все связанные функции, доступные по мере необходимости. # Включение исходного файла исходного кода в файл оболочки позволяет добавлять обновления встроенного кода непосредственно из системы контроля версий без каких-либо изменений. Добавление тестовых функций после включенного источника дает тестовому коду полный доступ ко всем функциям модуля, даже если у них нет открытого заголовка.