{"id":108127,"date":"2025-05-08T19:38:13","date_gmt":"2025-05-08T16:08:13","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d8%b2%d8%a8%d8%a7%d9%86-c-%d8%a8%d8%a7-%d9%be%d8%a7%d8%b1%d8%a7%d9%85%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d8%ba%db%8c%d8%b1-%d9%85%d8%a7%da%a9%d8%b1%d9%88-%d9%85%db%8c-%d8%b4%d9%88%d8%af\/"},"modified":"2025-05-08T19:38:13","modified_gmt":"2025-05-08T16:08:13","slug":"%d8%b2%d8%a8%d8%a7%d9%86-c-%d8%a8%d8%a7-%d9%be%d8%a7%d8%b1%d8%a7%d9%85%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d8%ba%db%8c%d8%b1-%d9%85%d8%a7%da%a9%d8%b1%d9%88-%d9%85%db%8c-%d8%b4%d9%88%d8%af","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d8%b2%d8%a8%d8%a7%d9%86-c-%d8%a8%d8%a7-%d9%be%d8%a7%d8%b1%d8%a7%d9%85%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d8%ba%db%8c%d8%b1-%d9%85%d8%a7%da%a9%d8%b1%d9%88-%d9%85%db%8c-%d8%b4%d9%88%d8%af\/","title":{"rendered":"\u0632\u0628\u0627\u0646 C \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631 \u0645\u0627\u06a9\u0631\u0648 \u0645\u06cc \u0634\u0648\u062f \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 0 \u0628\u0647 \u0637\u0648\u0631 \u0646\u0627\u062f\u0631\u0633\u062a 1 \u0631\u0627 \u0628\u0631\u0646\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0647\u0631 \u062f\u0648 GCC \u0648 MSVC \u0639\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f"},"content":{"rendered":"<p>\u0645\u0631\u062c\u0639: https:\/\/stackoverflow.com\/questions\/2124339\/c-preprocessor-va-args-number-of-arguments<\/p>\n<p>\u0645\u0646 \u0627\u0628\u062a\u062f\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"cp\">#define _expand(x) x\n#define _numargs(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N\n#define numargs(...) _expand(_numargs(_, ##__VA_ARGS__, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))\n<\/span><\/code><\/pre>\n<\/div>\n<p>MSVC \u0628\u0627\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f<code>_expand<\/code>\u06af\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0632\u0645\u0627\u0646 \u06af\u0633\u062a\u0631\u0634 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0635\u0641\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0637\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u062f. 1 \u0645\u0634\u06a9\u0644 \u062f\u06cc\u06af\u0631 \u0628\u0627 GCC \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u060c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f.<code>-std=c99<\/code> <code>-std=c23<\/code>\u060c \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0635\u0641\u0631 \u0646\u06cc\u0632 1 \u0627\u0633\u062a \u060c \u0632\u06cc\u0631\u0627<code>##<\/code>\u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u0633\u0648\u0646\u062f GCC \u0627\u0633\u062a \u060c \u0628\u0647 https:\/\/gcc.gnu.org\/onlinedocs\/cpp\/variadic-macros.html \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f \u060c \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f C \u062a\u0627 C23 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc \u0634\u0648\u062f.<code>__VA_OPT__<\/code>\u060c \u062c\u0627\u0644\u0628 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 MSVC \u0646\u06cc\u0632 \u0627\u0632 \u0622\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f<code>##<\/code>\u3002<\/p>\n<p>\u0645\u062b\u0644 \u0627\u06cc\u0646<code>(sizeof((int[]){__VA_ARGS__})\/sizeof(int))<\/code>\u0627\u0648\u0644 \u0627\u0632 \u0647\u0645\u0647 \u060c MSVC \u0628\u0627\u06cc\u062f \u0646\u0633\u062e\u0647 \u0628\u0627\u0644\u0627\u062a\u0631\u06cc \u0628\u0627\u0634\u062f \u0648 \u06cc\u06a9 \u0647\u0634\u062f\u0627\u0631 \u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 \u0627\u0632 \u0646\u0648\u0639 C4047 \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc \u06a9\u0646\u062f \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 GCC \u06cc\u06a9 \u062e\u0637\u0627 \u0627\u0633\u062a \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06af\u0631\u062f\u0622\u0648\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0641\u0642\u0637 6 \u067e\u0627\u0633\u062e \u0632\u06cc\u0631 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a \u060c \u0645\u0646 \u0622\u0646 \u0631\u0627 \u06a9\u0645\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0633\u0628\u06a9 \u0634\u062e\u0635\u06cc \u062e\u0648\u062f \u0628\u0627\u0634\u062f:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"cp\">#define _numargs_call(__arg_0, __arg_1) __arg_0 __arg_1\n#define _numargs_select(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, __arg_0, ...) __arg_0\n#define numargs(...) _numargs_call(_numargs_select, (_, ##__VA_ARGS__, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))\n<\/span><\/code><\/pre>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 MSVC \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<code>_numargs_call<\/code>\u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u060c \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0635\u0641\u0631 \u0645\u0634\u06a9\u0644\u06cc \u0648\u062c\u0648\u062f \u0646\u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a \u0648 \u062d\u062a\u06cc VS2007\/WDK7.1 \u0628\u0627\u0633\u062a\u0627\u0646\u06cc \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u06a9\u062f \u0622\u0632\u0645\u0648\u0646:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"numargs = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">numargs<\/span><span class=\"p\">());<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"numargs = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">numargs<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">));<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"numargs = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">numargs<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">.<\/span><span class=\"mi\">14<\/span><span class=\"p\">));<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"numargs = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">numargs<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">.<\/span><span class=\"mi\">14<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"hello\"<\/span><span class=\"p\">));<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">EXIT_SUCCESS<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u062c\u0631\u0627<code>cl test.c &amp;&amp; test.exe<\/code>\u06cc\u0627<code>gcc -o test.exe test<br \/>\n.c &amp;&amp; .\/test.exe<\/code>\u060c \u0646\u062a\u0627\u06cc\u062c \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>numargs = 0\nnumargs = 1\nnumargs = 2\nnumargs = 3\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0631\u062c\u0639: https:\/\/stackoverflow.com\/questions\/2124339\/c-preprocessor-va-args-number-of-arguments \u0645\u0646 \u0627\u0628\u062a\u062f\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645: #define _expand(x) x #define _numargs(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, &hellip;<\/p>\n","protected":false},"author":2,"featured_media":108128,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqkjucywvsu8kqq1utmo.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-108127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/108127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=108127"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/108127\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/108128"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=108127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=108127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=108127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}