{"id":2140,"date":"2023-09-20T17:34:10","date_gmt":"2023-09-20T15:34:10","guid":{"rendered":"https:\/\/www.fabienm.eu\/wordpress\/?p=2140"},"modified":"2023-09-20T17:34:43","modified_gmt":"2023-09-20T15:34:43","slug":"recuperer-la-taille-dun-enum-en-c","status":"publish","type":"post","link":"https:\/\/www.fabienm.eu\/wordpress\/2023\/09\/20\/recuperer-la-taille-dun-enum-en-c\/","title":{"rendered":"R\u00e9cup\u00e9rer la taille d&rsquo;un enum en C"},"content":{"rendered":"\n<p>En C il peut \u00eatre utile de conna\u00eetre le nombre de valeur d\u00e9clar\u00e9es dans un <a href=\"https:\/\/www.programiz.com\/c-programming\/c-enumeration\">enum<\/a> (au hasard pour faire une boucle d&rsquo;init) :<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code lang=\"\" class=\"hljs language-php \">enum MonEnum {\n    en_arbre,\n    en_fleur,\n    en_raisin,\n}\n<span class=\"hljs-comment\">#define MONENUM_SIZE 3<\/span>\n\n<span class=\"hljs-keyword\">for<\/span>(int i=<span class=\"hljs-number\">0<\/span>; i &lt; MONENUM_SIZE; i++){\n    faire_un_truc((enum MonEnum)i);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Mais faire un <code>#define<\/code> avec la taille \u00e0 mettre \u00e0 jour \u00e0 chaque fois qu&rsquo;on modifie l&rsquo;enum c&rsquo;est p\u00e9nible et on oublie facilement.<\/p>\n\n\n\n<p>Une m\u00e9thode pour \u00e9viter \u00e7a est d&rsquo;ajouter une valeurs dans l&rsquo;enum <strong>\u00e0 la fin de la liste<\/strong>. Puis de la caster en Int pour r\u00e9cup\u00e9rer la taille :<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code lang=\"\" class=\"hljs language-php \">enum MonEnum {\n    en_arbre = <span class=\"hljs-number\">0<\/span>,\n    en_fleur,\n    en_raisin,\n    <span class=\"hljs-comment\">\/* tricks pour r\u00e9cup\u00e9rer la taille *\/<\/span>\n    taille_de_MonEnum,\n}\n<span class=\"hljs-comment\">#define MONENUM_SIZE ((int)taille_de_MonEnum)<\/span>\n\n<span class=\"hljs-keyword\">for<\/span>(int i=<span class=\"hljs-number\">0<\/span>; i &lt; MONENUM_SIZE; i++){\n    faire_un_truc((enum MonEnum)i);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Il est pr\u00e9f\u00e9rable de bien initialiser la premi\u00e8re valeur \u00e0 0 pour \u00eatre s\u00fbr.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En C il peut \u00eatre utile de conna\u00eetre le nombre de valeur d\u00e9clar\u00e9es dans un enum (au hasard pour faire une boucle d&rsquo;init) : Mais faire un #define avec la taille \u00e0 mettre \u00e0 jour \u00e0 chaque fois qu&rsquo;on modifie &hellip; <a href=\"https:\/\/www.fabienm.eu\/wordpress\/2023\/09\/20\/recuperer-la-taille-dun-enum-en-c\/\">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":[1],"tags":[58,331,143],"class_list":["post-2140","post","type-post","status-publish","format-aside","hentry","category-non-classe","tag-c","tag-enum","tag-programmation","post_format-post-format-aside"],"_links":{"self":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=2140"}],"version-history":[{"count":2,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2140\/revisions"}],"predecessor-version":[{"id":2142,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2140\/revisions\/2142"}],"wp:attachment":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=2140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=2140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=2140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}