C28252
предупреждение C28252: Несогласованная аннотации для функции: параметр имеет другую аннотацию в этом экземпляре
Это предупреждение относится к ошибке в аннотации и отражает требование, которое заключается в том, что аннотации объявления функции должны соответствовать аннотациям в определении, кроме тех случаев, когда используется функция typedef.В этом случае функция typedef принимается в качестве определяющей и для объявления, и для определения.
Обратите внимание, что аннотации обычно реализуются как макросы и каждый такой макрос обычно создает несколько низкоуровневых аннотаций.Это предупреждение появляется для каждой несоответсвующей аннотации низкого уровня, поэтому одиночный несоответсвующий макрос аннотации может создавать несколько несоответсвующих аннотаций низкого уровня.Лучше всего просто сравнивать объявление и определение исходного кода для того, чтобы быть увереным, что они одинаковы.(Тривиальные различия в порядке аннотаций не сообщаются).
Сравнение всегда проиходит между первым найденным объявлением и текущим.Если существуют дополнительные объявления, то каждое объявление регестрируется группами по два.В данный момент невозможно выполнить сравнение, кроме как сравнение в парах, хотя можно указать, что существует более двух объявлений/определений.Сообщение об ошибке содержит список аннотаций, которые отличаются (на относительно низком уровне) между двумя экземплярами.
Это предупреждение выводит текст основного кода, отправленного компилятору, но не макросы, которые фактически используются, чтобы добавлять аннотации в исходный код (например в случае, когда макрос не используется).Как правило, не требуется понимать низкоуровневые аннотации, но необходимо уметь узнавать, что в аннотации существует несогласованность между номерами строк в сообщени об ошибке.В основном, проверка исходного кода определяет, почему несогласованность существует.