Compartir a través de


C28252

advertencia C28252: Anotación incoherente para la función: el parámetro tiene otra anotación en esta instancia

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

Observe que las anotaciones se implementan normalmente como macros y una macro producirá normalmente varias anotaciones de bajo nivel.Esta advertencia se informa para cada anotación de bajo nivel, por lo que una sola macro de anotación puede producir varias anotaciones de bajo nivel no coincidentes.Es mejor comparar simplemente el código fuente de la declaración y la definición para asegurarse de que son iguales.(Las diferencias triviales en el orden de las anotaciones no se informan.)

La comparación se hace siempre entre la primera declaración encontrada y la actual.Si hay declaraciones adicionales, cada declaración está protegida en grupos de dos.Actualmente no es posible realizar una comparación que no sea en pares, aunque es posible identificar que hay más de dos declaraciones y definiciones.El mensaje de error contiene una lista de anotaciones que difieren (a 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 utilizan para insertar realmente la anotación del código fuente (como ocurre siempre que se utilizan macros).Generalmente no es necesario comprender las anotaciones de bajo nivel, pero se debe tener en cuenta que las anotaciones están designadas como incoherentes entre los números de línea indicados en el mensaje de error.Principalmente, un examen del código fuente clarificará por qué existe la inconsistencia.