我正在尝试模拟SPI接口-使用gmock C ++框架进行读取,写入和传输
例如,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
。
这是正确的方法吗?
答案 0 :(得分:0)
strcpy_s
是C的 Microsoft扩展,能够在运行时检测某些缓冲区溢出错误,并且“最近”已标准化为可选功能在C11中。您援引的错误消息不会 not 表示Google Test或Goolge Mock有任何问题,但显然您的编译器未配置为理解strcpy_s
。请注意,尽管strcpy_s
在C11中是一个选项,但在任何C ++标准中都不是。您需要将源代码编译为C ++才能使用Google Test或Google Mock。
这取决于您的编译器如何在C ++模式下启用strcpy_s
(或是否可以启用)。