Condividi tramite


Avviso C28252

Annotazione incoerente per la funzione: il parametro ha un'altra annotazione in questa istanza

Questo avviso fa riferimento a un errore nell'annotazione e riflette il requisito che le annotazioni in una dichiarazione di funzione devono corrispondere a quelle nella definizione, tranne se è coinvolta una funzione typedef . In tal caso, la funzione typedef viene presa come definitiva sia per la dichiarazione che per la definizione.

Le annotazioni vengono in genere implementate come macro e una macro genererà in genere diverse annotazioni di basso livello. Questo avviso viene segnalato per ogni annotazione di basso livello senza corrispondenza, pertanto una singola macro di annotazione senza corrispondenza può produrre molte annotazioni di basso livello senza corrispondenza. È consigliabile confrontare la dichiarazione e il codice sorgente della definizione per assicurarsi che siano uguali. Le differenze semplici nell'ordine delle annotazioni non vengono segnalate.

Il confronto è sempre tra la prima dichiarazione trovata e quella corrente. Se sono presenti più dichiarazioni, ogni dichiarazione viene archiviata in gruppi di due. Non è attualmente possibile eseguire un confronto diverso da in coppie, anche se è possibile identificare che sono presenti più di due dichiarazioni/definizioni. Il messaggio di errore contiene un elenco delle annotazioni che differiscono (a un livello piuttosto basso) tra le due istanze.

Questo messaggio di avviso visualizza il testo del codice sottostante inviato al compilatore e non le macro utilizzate per inserire effettivamente l'annotazione nel codice sorgente , come avviene ogni volta che vengono utilizzate le macro. In generale, non è necessario comprendere le annotazioni di basso livello, ma è necessario riconoscere che le annotazioni vengono segnalate come incoerenti tra i numeri di riga segnalati nel messaggio di errore. Per lo più, un'ispezione del codice sorgente renderà chiaro perché esiste l'incoerenza.