QAC 4126, This integral or enum output parameter value is not subsequently checekd

OP #6808175
Lesenswert?
• ▲
▼
Mahlzeit,
ich mache misra für eine C++ code.
Hier habe ich ein Problem mit einer Warnung.
1
return waitFor([&]() { return ((*MSTPSR[n] & bit) != 0U);}, 100);

Hier bekomme ich die Warnung
"This integral or enum output parameter value is not subsequently 
checked"

Ich weiß was die Warnung bedeutet, also das ein integer (enum gibt es 
hier ja keins) nicht auf Gültigkeit überprüft worden ist. Aber auf 
welchem wert? und vor allem welche Variable?

QAC hilfe
1
  void foo(bool & ref);
2

3
  void f1()
4
  {
5
    bool success;
6
    foo(success);  // Not OK
7
  }
8
  
9
  void f2()
10
  {
11
    bool success;
12
    foo(success);  // OK
13
    if(!success)
14
    {
15
      throw 1;
16
    }
17
  }

also in f2() wird nachher success noch einmal überprüft


in einer header habe ich:
1
volatile uint32_t *MSTPSR[12];
2
volatile uint32_t *_MSTPSR[]   =
3
{
4
    (uint32_t *)0xE6150030, (uint32_t *)0xE6150038, (uint32_t *)0xE6150040, (uint32_t *)0xE6150048,
5
    (uint32_t *)0xE615004C, (uint32_t *)0xE615003C,
6
    (uint32_t *)0xE61501C0, (uint32_t *)0xE61501C4, (uint32_t *)0xE61509A0, (uint32_t *)0xE61509A4,
7
    (uint32_t *)0xE61509A8, (uint32_t *)0xE61509AC
8
};

Welche Variable muss ich hier wo noch auf was überprüfen um die Warnung 
weg zu bekommen?
Gast #6808437
Lesenswert?
• ▲
▼
So sieht sicherheitskritischer Code aus? Holla die Waldfee...

Chandler B. schrieb:
> Hier habe ich ein Problem mit einer Warnung.
>
> return waitFor([&]() { return ((*MSTPSR[n] & bit) != 0U);}, 100);
>
> Hier bekomme ich die Warnung
> "This integral or enum output parameter value is not subsequently
> checked"
>
> Ich weiß was die Warnung bedeutet, also das ein integer (enum gibt es
> hier ja keins) nicht auf Gültigkeit überprüft worden ist. Aber auf
> welchem wert? und vor allem welche Variable?

Also ich denke ja die Warnung hat nichts mit Gültigkeit zu tun, sondern 
mit Nicht-Verwendung.

Aber eigentlich sollte das derjenige wissen der so kritischen Code 
schreib{t|en muss}? ;-)
#6808682
Lesenswert?
• ▲
▼
Chandler B. schrieb:
> Ich weiß was die Warnung bedeutet, also das ein integer (enum gibt es
> hier ja keins) nicht auf Gültigkeit überprüft worden ist. Aber auf
> welchem wert? und vor allem welche Variable?

Ich verstehe die Meldung so, dass es darum geht, dass eine 
nicht-const-Referenz an eine Funktion übergeben und nachher mit dem Wert 
nichts gemacht wird. Normalerweise ist ein Referenz-Funktionsparameter 
ja nur dann nicht const, wenn die Funktion damit etwas an den Aufrufer 
zurückgibt.
Möglicherweise geht es hier um das & in der capture-Liste, das alles per 
(eben nicht-const-)Referenz an das Lambda übergibt.
Es scheint, dass in C++ die Möglichkeit von Captures per const-Referenz 
leider fehlt.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.