Что означает #define TEST_CASE(...)

Что означает это определение

#define TEST_CASE(...)

в тесте Unity C проводка?

Затем он используется следующим образом (пример):

TEST_CASE(0)
TEST_CASE(44)
TEST_CASE((90)+9)
void test_TheseShouldAllPass(int Num)
{
    TEST_ASSERT_TRUE(Num < 100);
}

Подробнее о Unity здесь: http://throwtheswitch.org/white-papers/unity-intro.html

1 ответ

Это единый вызов препроцессора для генерации тестовых случаев для следующего тестового примера. Код компилируется (или прекомпилируется) для:

test_TheseShouldAllPass(0);
test_TheseShouldAllPass(44);
test_TheseShouldAllPass(99);

Еще немного информации:

Если список идентификаторов не заканчивается многоточием, число аргументов в вызове макроса должно совпадать с количеством параметров в соответствующем определении макроса. Во время подстановки параметров любые аргументы, оставшиеся после замены всех указанных аргументов (включая любые разделяющие запятые), объединяются в один аргумент, называемый переменным аргументом. Переменный аргумент заменит любое вхождение идентификатора VA_ARGS в списке замены. Следующий пример иллюстрирует это:

#define debug(...)   fprintf(stderr, __VA_ARGS__)

debug("flag");     /*   Becomes fprintf(stderr, "flag");   */
Другие вопросы по тегам