我正在尝试使用gmock C ++框架模拟SPI接口 - 读,写,传输
例如,SPI-Read签名是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
。
这是一种正确的方法吗?
strcpy_s
是Microsoft的C扩展,能够在运行时检测某些缓冲区溢出错误,它最近被标准化为C11中的可选功能。您引用的错误消息并未表明Google Test或Goolge Mock存在任何问题,但显然您的编译器未配置为了解strcpy_s
。请注意,虽然strcpy_s
是C11中的一个选项,但它不符合任何C ++标准。您需要将源代码编译为C ++才能使用Google Test或Google Mock。
这取决于你的编译器如何在C ++模式下启用strcpy_s
(或者是否可以)。