#gmock
#googlemock
Вопрос:
Я пытаюсь смоделировать интерфейс SPI — чтение, запись, передача с использованием gmock C framework
Например, сигнатура SPI-чтения — это bool SPI_Read(void* rdata, int num_bytes);
Я определил
int device_info[5] = {0x01, 0x02, 0x03, 0x04, 0x05};
ACTION_P(SetArg0ToIntWithSizeArg1, value) { strcpy_s(static_cast<int*>(arg1), arg2, value); }
EXPECT_CALL(spi_obj, SPI_Read(_,_))
.Times(1)
.WillOnce(DoAll(SetArg0ToIntWithSizeArg1(device_info),Return(true)));
Я получаю ошибку компиляции: ‘strcpy_s’ was not declared in this scope
.
и правильно ли это сделать?
Ответ №1:
strcpy_s
было ли расширение Microsoft для C, чтобы иметь возможность обнаруживать определенные ошибки переполнения буфера во время выполнения, которые «недавно» были стандартизированы как необязательная функция в C11. Приведенное вами сообщение об ошибке не указывает на какие-либо проблемы с Google Test или Goolge Mock, но, очевидно, ваш компилятор не настроен на понимание strcpy_s
. Пожалуйста, обратите внимание, что, хотя strcpy_s
это опция в C11, ее нет ни в одном стандарте C . Вам необходимо скомпилировать исходный код на C , чтобы иметь возможность использовать Google Test или Google Mock.
Это зависит от вашего компилятора, как включить strcpy_s
в режиме C (или возможно ли это вообще).