Как правильно кодировать код, который расширяется макросом - PullRequest
1 голос
/ 28 июня 2019

У меня возникли проблемы при попытке проверить покрытие кода одного из моих проектов на github, размещенном здесь .В основном это C и макросы, которые расширяются до некоторого полезного кода.

Я писал один тест и решил опубликовать его ранее.Это означает, что тест не полностью тестировал все функциональные возможности, которые были расширены макросом, но каким-то образом получил 100% -ное покрытие кода для этого конкретного файла.Все тесты пройдены (поэтому прошел весь не сгенерированный код), но не все функции, которые были расширены макросом, поэтому я предположил, что сгенерированный код не был принят во внимание.

Итак, я увидел две возможности:

  • A - Выполнить трюк с компилятором, чтобы кодеки могли учитывать расширенный код ;
  • B - Скопировать и вставить полученный макрос непосредственно в файл(что не является идеальным, поскольку расширение макроса может измениться.)

code_image

CMC_CREATE_UNIT расширяется в одну функцию, которая затем вызывается в main внизу (не показано).CMC_CREATE_TEST расширяется до серии do {} while(0) (подробнее здесь ).Также LIST_GENERATE расширяется до ряда функций, которые являются целью этого модульного теста.

...