C++Guns – RoboBlog

02.02.2016

C gecaste (Bug of the day 10)

Filed under: Allgemein — Tags: — Thomas @ 10:02

Ist nicht direkt ein Bug, aber kann ganz leicht zu einem werden. Vorallem stört das rum-gecaste und Pointer auf locale Variablen. Hier ein Stück Code, wo ich erst drei mal hinschauen musste


typedef struct s_rocsmq_message {
...
} t_rocsmq_message, *p_rocsmq_message;

void func() {
  t_rocsmq_message message;
  rocsmq_recv(..., (p_rocsmq_message) & message, ROCSMQ_POLL)
}

Aber, ich sollte weniger mich beschweren, ehr Hilfe leisten.
Hier eine sehr einfache C++ version ohne Extras:


namespace rocs{
struct mqMessage {
...
};
}

using namespace rocs;
void func() {
  mqMessage message = mqRecv(...);
}

Keine Pointer, kein gecaste. Lokale Variable dann declariert und gleich initialisiert, wenn man sie braucht.
Projektname "rocs" aus den Datentypen und Funktionsnamen entfernt und in ein namespace ausgelagert. Verständlicher,
weniger Code, weniger Fehler.

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress