Используя 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'],