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.