背景:
\n我正在模拟硬件 i2c 传输函数,并尝试匹配传递给它的数组。这是在嵌入式环境中,因此需要 C 风格的数组并且缺少 STL 容器。
\n尝试匹配我的第二个参数,即 c 样式数组(下面的缓冲区),在编译时失败。
\n设置:
\n接口定义为:
\nvirtual I2C_Status_e i2c1Transmit(uint8_t address, \n const uint8_t buffer[], \n uint8_t length) = 0;\nRun Code Online (Sandbox Code Playgroud)\n我将我的测试模拟设置为:
\nMOCK_METHOD(I2C_Status_e,\n i2c1Transmit,\n (uint8_t address, const uint8_t buffer[], uint8_t length),\n (override));\nRun Code Online (Sandbox Code Playgroud)\n二进制文件中的调用点(此传输发送单个 8 位命令):
\nstatus = hal->i2c1Transmit(address, readStatusCommand, 1);\nRun Code Online (Sandbox Code Playgroud)\n其中 readStatusCommand 默认为:
\nconst uint8_t readStatusCommand[1] = {0x00};\nRun Code Online (Sandbox Code Playgroud)\n测试代码:
\n这里 readStatusCommand 具有与上面相同的签名。
\nEXPECT_CALL(hal, i2c1Transmit(address0, ElementsAreArray(readStatusCommand, 1), txLength))\n .WillOnce(Return(HAL_Ok));\nRun Code Online (Sandbox Code Playgroud)\n编译器输出:
\n …