Open Watcom W115 Fehler

  • Hallo zusammen

    Ich bin noch über einen interessantes Problem gestossen. Hierzu mal eine Funktion, in der das Problem auftritt:

    Wenn ich beim zweiten sprintf ein Kaufmanns-Und bei ldv verwende, dann werden die beiden 0 nicht in den Buffer geschrieben. Ich erhalte immerhin eine Warnung W115. Ohne Kaufmanns-Und funktioniert es tadellos.

    Dazu habe ich folgenden Post gefunden:

    W115 warning not emitted for an array member of a struct · Issue #1158 · open-watcom/open-watcom-v2
    As seen from the test case below, only the C++ compiler catches all 3, whereas the C compiler only catches the plain array variable. OW toolchain is the CI…
    github.com

    Scheint ein Open Watcom Fehlerzu sein. Oder ich mache ganz krumme Dinger...

    Ist schon irgendjemand über das Problem gestolpert?

    Gruss Andreas

  • Hallo Andreas,

    du hast ein Array aus chars definiert und diesem die Bezeichnung ldv gegeben. Wenn du ldv (ohne &) benutzt ist damit die Adresse des ersten Elements aus dem Array gemeint. Mit anderen Worten ldv ist für C das gleiche wie &ldv[0].

    D.h. &ldv wird irgendwo in den Speicher zeigen. Ich vermute dass der Zugriff auf diese Speicherstelle nach einer ausreichend großen Anzahl von Versuchen auch mal schief gehen sollte. Auch vermute ich dass der Watcom Compiler wegen der Addition mit l meckert.


    Jirka

    Es ist auch dein FreeGEOS!

  • Hallo Jirka

    Herzlichen Dank für die Erklärung. Ja, wenn man nach Beispielen mit Strings aka Array von Chars sucht, dann findet man fast alle ohne den Adress-Operator & voran. Interessant, dass ich hierzu bei OWC einen Eintrag gefunden habe.

    Ich dachte einfach, dass bei man bei char mit 1 Byte Länge einfach die Adresse hochzählen kann, um die entsprechende Stelle zu lesen / beschreiben. Man merkt, dass ich doch schon einige Zeit kein (GO)C mehr gemacht habe...

    Andreas