Advertencia C28253

Anotación incoherente para la función: el parámetro tiene otras anotaciones en esta instancia

Esta advertencia hace referencia a un error en la anotación y refleja el requisito de que las anotaciones de una declaración de función deben coincidir con las de la definición, excepto si una función typedef está implicada. En ese caso, la función typedef se toma como definitiva para la declaración y la definición.

Normalmente, las anotaciones se implementan como macros y una macro suele producir varias anotaciones de bajo nivel. Esta advertencia se notifica para cada anotación de bajo nivel no coincidentes, por lo que una única macro de anotación no coincidentes puede producir muchas anotaciones de bajo nivel no coincidentes. Es mejor comparar la declaración y el código fuente de definición para asegurarse de que son iguales. (No se notifican diferencias triviales en el orden de las anotaciones).

La comparación siempre se produce entre la primera declaración encontrada y la actual. Si hay más declaraciones, cada declaración se comprueba en grupos de dos. Actualmente no es posible realizar una comparación distinta de en pares, aunque es posible identificar que hay más de dos declaraciones o definiciones. El mensaje de error contiene una lista de las anotaciones que difieren (en un nivel bastante bajo) entre las dos instancias.

Este mensaje de advertencia muestra el texto del código subyacente enviado al compilador y no las macros que se usan para insertar realmente la anotación en el código fuente (como sucede cuando se usan macros). En general, no es necesario comprender las anotaciones de bajo nivel, pero debe reconocer que las anotaciones se notifican como incoherentes entre los números de línea notificados en el mensaje de error. Principalmente, una inspección del código fuente dejará claro por qué existe la incoherencia.