{"id":2479,"date":"2016-02-02T10:26:14","date_gmt":"2016-02-02T09:26:14","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=2479"},"modified":"2016-02-02T10:52:36","modified_gmt":"2016-02-02T09:52:36","slug":"c-gecaste-bug-of-the-day-10","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=2479","title":{"rendered":"C gecaste (Bug of the day 10)"},"content":{"rendered":"<p>Ist nicht direkt ein Bug, aber kann ganz leicht zu einem werden. Vorallem st\u00f6rt das rum-gecaste und Pointer auf locale Variablen. Hier ein St\u00fcck Code, wo ich erst drei mal hinschauen musste<\/p>\n<pre><code>\r\ntypedef struct s_rocsmq_message {\r\n...\r\n} t_rocsmq_message, *p_rocsmq_message;\r\n\r\nvoid func() {\r\n  t_rocsmq_message message;\r\n  rocsmq_recv(..., (p_rocsmq_message) & message, ROCSMQ_POLL)\r\n}\r\n<\/code><\/pre>\n<p>Aber, ich sollte weniger mich beschweren, ehr Hilfe leisten.<br \/>\nHier eine sehr einfache C++ version ohne Extras:<\/p>\n<pre><code>\r\nnamespace rocs{\r\nstruct mqMessage {\r\n...\r\n};\r\n}\r\n\r\nusing namespace rocs;\r\nvoid func() {\r\n  mqMessage message = mqRecv(...);\r\n}\r\n<\/code><\/pre>\n<p>Keine Pointer, kein gecaste. Lokale Variable dann declariert und gleich initialisiert, wenn man sie braucht.<br \/>\nProjektname \"rocs\" aus den Datentypen und Funktionsnamen entfernt und in ein namespace ausgelagert. Verst\u00e4ndlicher,<br \/>\nweniger Code, weniger Fehler.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ist nicht direkt ein Bug, aber kann ganz leicht zu einem werden. Vorallem st\u00f6rt das rum-gecaste und Pointer auf locale Variablen. Hier ein St\u00fcck 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) &#038; message, ROCSMQ_POLL) } Aber, ich sollte weniger [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[17],"class_list":["post-2479","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cpp"],"_links":{"self":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/2479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2479"}],"version-history":[{"count":3,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/2479\/revisions"}],"predecessor-version":[{"id":2483,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/2479\/revisions\/2483"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2479"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}