Используя cmock, чтобы смоделировать функцию, которая является CALLBACK Windows

У меня возникла проблема со случаем, когда я создал функцию C, которая передается в другую библиотеку в качестве обратного вызова, поэтому он использует нотацию CALLBACK. это использует VS2015.

VALL CALLBACK TheCallback(недействительный)

я тестирую код с помощью unity и cmock и пытаюсь смоделировать обратный вызов

поэтому, когда скрипты cmock создают все макеты (файл заголовка mock), он создает такие строки:

void TheCallback_CMockIgnoreAndReturn (UNITY_LINE_TYPE cmock_line, VOID CALLBACK cmock_to_return);

(обратите внимание на слово CALLBACK там)

и когда я компилирую, я получаю предупреждения и ошибки как это:

предупреждение C4229: используется анахронизм: модификаторы данных игнорируются

ошибка C2182: "cmock_to_return": недопустимое использование типа "void"

Кажется, это связано с тем, что ЗВОНОК застрял прямо посередине.

какие-либо идеи о том, как я могу объявить это как CALLBACK и не иметь VS2015 жаловаться на тип в прототипе функции игнорировать и возвращать макет?

мне интересно, если мне нужно как-то отменить определение CALLBACK при модульном тестировании, не уверен, смогу ли я вообще

Любые идеи были бы великолепны.. Спасибо.

1 ответ

Чтобы сделать это, вы добавляете CALLBACK в список "соглашений о вызовах".

:cmock:
    :c_calling_conventions:
        - CALLBACK

или в cmock_config.rb добавьте CALLBACK::

:c_calling_conventions       => ['__stdcall', '__cdecl', '__fastcall', 'CALLBACK'],
Другие вопросы по тегам