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 */
}

Есть ли способ обойти эти проблемы?

0 ответов

Другие вопросы по тегам