2017-06-22 1 views
0

Ich bin nicht sicher, warum die statische Code-Analyse-Tool Coverity Fahnen:Warum meldet Coverity eine Warnung?

CID 40172 (#1 of 1): Parse warning (PW.INCOMPATIBLE_PARAM) 
1. incompatible_param: argument of type "volatile mpls_RuntimeInfo_t *" is incompatible with parameter of type "void *" 

für diese Linie:

memset(&SW_RuntimeInfo[idx],0,sizeof(mpls_RuntimeInfo_t)); 

wenn SW_RuntimeInfo als volatile static mpls_RuntimeInfo_t SW_RuntimeInfo[LABEL_T_CNT] = { 0 }; im globalen Bereich deklariert werden.
Warum löst es eine Flagge & Wie behebe ich das?

+3

Nie 'memcpy'' flüchtige' qualifizierte Objekte! 'memcpy' garantiert keine Reihenfolge des Zugriffs. Die Frage ist, warum benutzen Sie überhaupt "volatile". Es scheint kein Hardware-Register zu sein, also ist es höchstwahrscheinlich falsch! ('volatile' ist nicht für die Inter-Thread-Kommunikation geeignet.) – Olaf

Antwort

1

Er wirft die Warnung, weil Sie einen flüchtigen Zeiger auf einen nichtflüchtigen Parameter übergeben. Wenn Sie wirklich möchten, dass die Warnung nicht mehr angezeigt wird, geben Sie einfach Ihr Argument auf void *. Aber vielleicht sollten Sie erneut überprüfen, ob Ihre Variable flüchtig sein sollte, oder sie auf andere Weise initialisieren.

Verwandte Themen