Предупреждение C28251

Несогласованная заметка для функции: этот экземпляр имеет ошибку

Это предупреждение ссылается на ошибку в заметке и отражает требование, что заметки в объявлении функции должны соответствовать определениям, за исключением случаев, когда typedef функция связана. В этом случае функция typedef принимается как окончательно для объявления, так и для определения.

Заметки обычно реализуются как макросы, и один макрос обычно выдает несколько низкоуровневых заметок. Это предупреждение сообщается для каждой несовпадной заметки низкого уровня, поэтому один несоответливаемый макрос заметки может дать множество несовпаденных заметок низкого уровня. Лучше всего сравнить исходный код объявления и определения, чтобы убедиться, что они одинаковы. (Тривиальные различия в порядке заметок не сообщаются.)

Сравнение всегда выполняется между первым объявлением, найденным и текущим. Если есть больше объявлений, каждое объявление проверка в группах из двух. В настоящее время невозможно выполнить сравнение, отличное от пар, хотя можно определить, что существует более двух объявлений и определений. Приведенное выше текстовое поле содержит список заметок, которые отличаются (на довольно низком уровне) между двумя экземплярами.

Это предупреждение отображает текст базового кода, отправляемого компилятору, а не макросы, которые используются для фактический вставки заметки в исходный код (как и в случае при использовании макросов). Как правило, вам не нужно понимать заметки низкого уровня, но следует признать, что заметки передаются как несогласованные между номерами строк, сообщаемых в сообщении об ошибке. В основном проверка исходного кода даст понять, почему несогласованность существует.