如何解决ceedling/cmock:模拟可变参数函数或 va_list 参数
我试图模拟这段代码:
int myPrintf(const char *fmt,...);
int myVprintf(const char *fmt,va_list args);
对于这两个函数,都会生成一些错误的代码。例如:
typedef int (* CMOCK_myPrintf_CALLBACK)(const char* fmt,int cmock_num_calls);
void myPrintf_AddCallback(CMOCK_myPrintf_CALLBACK Callback);
void myPrintf_Stub(CMOCK_myPrintf_CALLBACK Callback);
#define myPrintf_StubWithCallback myPrintf_Stub
即使在 va_list
参数的情况下,生成的代码也不会编译:
void CMockExpectParameters_myVprintf(CMOCK_myVprintf_CALL_INSTANCE* cmock_call_instance,const char* fmt,va_list args)
{
cmock_call_instance->Expected_fmt = fmt;
memcpy((void*)(&cmock_call_instance->Expected_args),(void*)(&args),sizeof(va_list[sizeof(args) == sizeof(va_list) ? 1 : -1])); /* add va_list to :treat_as_array if this causes an error */
}
有没有办法解决这些问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。