{"id":1210,"date":"2018-12-05T20:02:43","date_gmt":"2018-12-05T18:02:43","guid":{"rendered":"http:\/\/www.fabienm.eu\/wordpress\/?p=1210"},"modified":"2018-12-06T23:04:22","modified_gmt":"2018-12-06T21:04:22","slug":"bug-c-du-jour","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/wordpress\/2018\/12\/05\/bug-c-du-jour\/","title":{"rendered":"Bug C du jour"},"content":{"rendered":"<p>Qu&rsquo;affiche le code suivant ?<\/p>\n<pre>char* states[] = {\r\n    \"PLOP\",\r\n    \"PLIP\",\r\n    \"BOUHHH\",\r\n    \"CROTTE\",\r\n    \"DINGDING\",\r\n    \"CAFE\",\r\n    \"UB40\"\r\n    \"GWB\",\r\n};\r\nchar * others_string[] = {\r\n    \"ROGER\",\r\n    \"RABBIT\",\r\n};\r\n[...]\r\n\r\nprintf(\"State %s\\n\", states[7]);\r\n<\/pre>\n<p>Je pr\u00e9cise que je compile toujours en -Wall et que je n&rsquo;avais aucun warning bien s\u00fbr !<\/p>\n<p>[edit 6 d\u00e9cembre 2018]<\/p>\n<p>Si c&rsquo;est un compilateur GCC pour ARM sur <a href=\"http:\/\/www.opossom.com\/english\/products-processor_boards-apf6.html\">APF6<\/a> (j&rsquo;ai pas toutes les options en t\u00eate) la fonction printf affiche :<\/p>\n<pre>State ROGER\r\n<\/pre>\n<p>Par contre sur un pc (debian) sans aucune option sp\u00e9cifique :<\/p>\n<pre>State (null)\r\n<\/pre>\n<p>Et oui \u00e7a n&rsquo;est pas vu comme un bug &#8230; puisque \u00e7a compile en -Wall et que \u00e7a s&rsquo;ex\u00e9cute sans probl\u00e8me (enfin pour l&rsquo;ex\u00e9cution il y a quand m\u00eame une histoire de pointeur qui va trifouiller au mauvais endroit de la m\u00e9moire sur la version \u00abembarqu\u00e9es\u00bb).<\/p>\n<p>Tout simplement car deux cha\u00eenes de caract\u00e8res c\u00f4tes \u00e0 c\u00f4tes sont consid\u00e9r\u00e9es comme une seule et m\u00eame cha\u00eene.<br \/>\nIci \u00ab\u00a0UB40\u00a0\u00bb et \u00ab\u00a0GWB\u00a0\u00bb ne sont pas deux cha\u00eenes de caract\u00e8res distinctes mais une seule et m\u00eame cha\u00eene : \u00ab\u00a0UB40GWB\u00a0\u00bb. Il n&rsquo;y a pas d&rsquo;index num\u00e9ro 7 et donc on d\u00e9borde sur la suite &#8230; qui est \u00e9galement un tableau de pointeurs sur cha\u00eenes de caract\u00e8res. Du coup \u00e7a ne le d\u00e9range pas de l&rsquo;afficher.<br \/>\ncqfd<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qu&rsquo;affiche le code suivant ? char* states[] = { \u00ab\u00a0PLOP\u00a0\u00bb, \u00ab\u00a0PLIP\u00a0\u00bb, \u00ab\u00a0BOUHHH\u00a0\u00bb, \u00ab\u00a0CROTTE\u00a0\u00bb, \u00ab\u00a0DINGDING\u00a0\u00bb, \u00ab\u00a0CAFE\u00a0\u00bb, \u00ab\u00a0UB40\u00a0\u00bb \u00ab\u00a0GWB\u00a0\u00bb, }; char * others_string[] = { \u00ab\u00a0ROGER\u00a0\u00bb, \u00ab\u00a0RABBIT\u00a0\u00bb, }; [&#8230;] printf(\u00ab\u00a0State %s\\n\u00a0\u00bb, states[7]); Je pr\u00e9cise que je compile toujours en -Wall et que &hellip; <a href=\"http:\/\/www.fabienm.eu\/wordpress\/2018\/12\/05\/bug-c-du-jour\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"aside","meta":{"footnotes":""},"categories":[10,11],"tags":[202,58,143],"class_list":["post-1210","post","type-post","status-publish","format-aside","hentry","category-informatique","category-programmation","tag-bug","tag-c","tag-programmation","post_format-post-format-aside"],"_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=1210"}],"version-history":[{"count":5,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1210\/revisions"}],"predecessor-version":[{"id":1217,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1210\/revisions\/1217"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=1210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=1210"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=1210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}