Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    thelsing
    @thelsing
    Arduino hat glaub ich als Standard CFLAG -Wall. Ich habe unter linux dazu noch -Wno-unknown-pragmas -Wno-switch
    Bei den Switches kann man natürlich ruhig einen default-Zweig einbauen. Besser wäre es allerdings zu Überlegen ob da nicht eine richtige Aktion erfolgen sollte.
    Die Warnungen wegen den #region Blöcken wirst du wohl nicht weg kriegen. Der erlauben in Visual Studio das Einklappen von bestimmte Bereichen.
    phant0mias
    @phant0mias
    Für die region Blöcke habe ich auch die Warnungen abgeschaltet, das geht nicht anders.
    Bei den switch Blöcken und Variablen würde ich die Warnungen eher nicht abschalten. Für die switch Blöcke hätte ich folgenden Vorschlag:
        `default:
            print("WUC-AL.iC:");
            println(apdu.type());
        break;`
    phant0mias
    @phant0mias
    Das schaut zwar ein bißchen seltsam aus, aber viel Text würde die Programmgröße aufblähen.
    • WUC - Warnung unused case
    • AL - Name der Klasse, ihr verwendet Camel Case bei den Namen, es wäre immer der erste Buchstabe in diesem Fall Application Layer
    • iC . Name der Funktion, auch der erste Buchstabe, hier ApplicationLayer::individualConfirm
    phant0mias
    @phant0mias
    Falls der Wert im switch statement eher ignoriert werden soll, dann braucht man keine Ausgabe machen, aber das kann ich bisher noch nicht beurtteilen. Aber durch das Einfügen des default Zweiges an 7 Stellen sind bei mir mehrere hundert Warnungen entfernt worden.
    phant0mias
    @phant0mias
    Bei den nicht verwendeten Parametern einer Funktion gäbe es 3 Möglichkeiten:
    • Den Namen des Parameters entfernen, aber dann kennt man den Namen nicht mehr, wenn man ihn doch verwenden will oder die Funktion überarbeitet
    void BusAccessUnit::deviceDescriptorReadIndication(Priority, HopCountType, uint16_t , uint8_t ) { }
    • Den Namen auskommentieren
    void BusAccessUnit::deviceDescriptorReadIndication(Priority /*priority*/, HopCountType /*hopType*/, uint16_t /*asap*/, uint8_t /*descriptorType*/) { }
    phant0mias
    @phant0mias
    • Ein Macro verwendet um eine "Verwendung" vorzutäuschen.
    void BusAccessUnit::deviceDescriptorReadIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t descriptorType) { VAR_UNUSED(priority); VAR_UNUSED(hopType); VAR_UNUSED(asap); VAR_UNUSED(descriptorType); }
    Das Macro würde wir folgt aussehen:
    This message was deleted
    ifndef VAR_UNUSED define VAR_UNUSED(par) (void)par; endif
    Der Vorteil wäre man findet die nicht verwendeten Variablen schnell, der Nachteil ist mehr Code, und ich habe keine zentrale include Datei gefunden die von allen Sourcedateien verwendet wird.
    phant0mias
    @phant0mias
    Wie bereits gesagt ich würde die Änderungen durchführen, Ihr müßtet euch noch entscheiden wie es werden soll, Ihr kennt euren COde besser und es ist euer Prgrammierstil.
    Ab morgen bekommen wir für eine Woche Besuch, da geht dann bei mir nicht mehr
    thelsing
    @thelsing
    Bei den nichtbenutzten Parametern bitte einfach die Warnung abschalten. Die Signaturen den Methoden sind so, wie in der Spezifikation definiert. Ich möchte die daher so lassen. Bei den Warnungen bin kein Freund von kryptischen Abkürzungen. Da weiß in einem Jahr keiner mehr, welche Abkürzung was bedeutet. So knapp ist der Flash auch nicht, dass man die Bytes in den Stringkonstanten sparen muss. Falls dass mal ein Problem wird, kriegt jeder String eine Nummer oder eine Abkürzung. Dann kann man per define zwischen den Nummern/Abkürzungen und den Strings wechseln.
    phant0mias
    @phant0mias
    Ok, ich hatte auch schon Projekte da wurden Bits gespart. Ich schalte dann die Warnungen ab. Bei den Parametern bin ich nur vorsichtig da wir oft Fehler hatten wo die Parameter nicht korrekt weitergereicht wurde. So wurden z.B. Testzwecken feste Werte eingetragen und die Änderung nicht mehr rückgängig gemacht.
    phant0mias
    @phant0mias
    In der Datei knx_facade.h gibt es folgenden Code:
    void enabled(bool value) { _bau.enabled(true); }
    da wird der Parameter value nicht verwendet. Absicht?
    thelsing
    @thelsing
    Nein. Das ist ein Fehler. Ändere ich gleich.
    Ich bin auch gleich mal die switches durchgegangen und hab geprüft, ob da was vergessen wurde.
    Aber es sind nur Telegrammtypen die bisher nicht genutzt werden.
    Ich hab auch gleich die default: Anweisungen hinzugefügt. Sorry dass du dir umsonst Arbeit gemacht hast.
    thelsing
    @thelsing
    Bei den unbenutzten Parameter gibt es wahrscheinlich hauptsächlich in der bau.cpp, oder? Bei mir zeigt der compiler die Warnungen gar nicht.
    phant0mias
    @phant0mias

    Also übersetzt habe ich für Linux. Die Warnungen sind in (wenn ich alle erwoscht habe):
    application_layer.cpp
    application_program_object.cpp
    association_table_object.cpp
    bau.cpp
    bau27B0.cpp
    bau_systemB.cpp
    data_link_layer.cpp
    device_object.cpp
    dptconvert.cpp
    ip_parameter_object.cpp
    knx_ip_frame.cpp
    knx_value.cpp
    network_layer.cpp:27
    platform.cpp
    property.cpp
    rf_medium_object.cpp
    table_object.cpp
    transport_layer.cpp
    linux_platform.cpp
    knx_facede.h

    Die meisten sind in bau.cpp unt dtpconvert.cpp. Die meisten sind sicher unkritisch, aber hier habe ich nochmal einen Kandidaten:

    KnxIpFrame::KnxIpFrame(uint8_t* data,
    uint16_t length)
    {
    _data = data;
    }
    ^

    Für mich ist das Ganze eine gute Einarbeitung...
    thelsing
    @thelsing
    Den hab ich schon geändert. Da ist die Länge für eine spätere Validierung vorgesehen.
    phant0mias
    @phant0mias
    Also ich habe Ubuntu in einer virtuellen Maschine installiert. In dieser virtuellen Maschine den QT Creator installiert, der Compiler ist mingw. An den Einstellungen habe ich nichts geändert. Compiliert und gedebuggt wird unter Linux in der virtuellen MAschine
    thelsing
    @thelsing
    Ich habe Debian Stretch in einer VM.
    phant0mias
    @phant0mias
    Schon mal den QT Creator ausprobiert
    Dein Code konnte damit prima übersetzt werden
    thelsing
    @thelsing
    Liegt bestimmt an der g++ Version. Ich hab 6.3. Debian ist da ja immer etwas hinterher.
    Ich nutze beruflich Visual Studio. Daher auch privat.
    phant0mias
    @phant0mias
    Ich habe auch immer Visual Studio verwendet, auch in der Arbeit
    Ich schätze Ihn, besonders beim debuggen
    Der Qt Creator ist da gelegentlich schon schwierig
    Auf jeden Fall freue ich mich auf die Hardware und ob ich die serielle Kommunikation hinbekomme
    thelsing
    @thelsing
    Bestimmt. Zur Not gibt es halt ein neues Datalink-Layer.
    phant0mias
    @phant0mias
    Vermutlich komme ich erst Ende der Ferien dazu weiterzumachen, also weiterhin eine gute Zeit
    thelsing
    @thelsing
    Danke. Kein Problem. Ist ja eh Freizeit.