Udostępnij za pośrednictwem


C28252

Ostrzeżenie C28252: niespójna adnotacja dla funkcji: parametr ma inną adnotację dla tego wystąpienia

Ostrzeżenie to odwołuje się do błędu w adnotacji i odzwierciedla wymaganie, że adnotacje do deklaracji funkcji muszą być odpowiadać adnotacjom do definicji, z wyjątkiem przypadków, kiedy zaangażowana jest funkcja typedef.W takim przypadku, funkcja typedef jest brana jako ostateczna, zarówno dla deklaracji jak i definicji.

Zauważ, że adnotacje są zwykle implementowane jako makra, a pojedyncze makro daje zwykle kilka adnotacji niskiego poziomu.Ostrzeżenie to jest raportowane dla każdej niedopasowanej adnotacji niskiego poziomu, przez co pojedyncze, niedopasowane makro adnotacji może dać wiele niedopasowanych adnotacji niskiego poziomu.Najlepiej jest po prostu porównywać kod źródłowy deklaracji i definicji, aby upewnić się, że są takie same.(Oczywiste różnice w kolejności adnotacji nie są raportowane.)

Porównanie następuje zawsze między pierwszą znalezioną deklaracją, a bieżącą.Jeśli istnieją dodatkowe deklaracje, wtedy każda z nich jest sprawdzana w grupach po dwie.Nie jest obecnie możliwe wykonanie porównania inaczej niż w parach, chociaż możliwe jest zidentyfikowanie, że istnieją więcej niż dwie deklaracje/definicje.Komunikat o błędzie zawiera listę adnotacji, które różnią się (na dość niskim poziomie) między dwoma wystąpieniami.

Ten komunikat ostrzeżenia wyświetla tekst podstawowego kodu wysyłanego do kompilatora, a nie makr, które zostały użyte, aby faktycznie wstawić adnotację do kodu źródłowego (jak w każdym przypadku, w którym używane są makra).Zazwyczaj, nie trzeba rozumieć jak działają adnotacje niskiego poziomu, powinno się jednak rozpoznawać przypadek, gdy adnotacje są raportowane jako niespójne między numerami wierszy raportowanymi przez komunikat o błędzie.Zazwyczaj, kontrola kodu źródłowego wyjaśni, dlaczego istnieje niespójność.