Next: , Previous: One Macro Call, Up: M4 Quotation   [Contents][Index]


8.1.3 °úÍÑÉä¤ÈÆþ¤ì»Ò¾õ¤Î¥Þ¥¯¥í

¤³¤ì°Ê¹ß¤ÎÎã¤Ç¤Ï¡¤°Ê²¼¤Î¥Þ¥¯¥í¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡¥

define([car], [$1])
define([active], [ACT, IVE])
define([array], [int tab[10]])

ÄɲäÎËä¤á¹þ¤Þ¤ì¤¿¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ï¡¤¤½¤ì¤¾¤ì¶½Ì£¿¼¤¤°úÍÑÉä¤Ë¤Ä¤¤¤Æ¡¤¤½¤Î ¾¤Î²ÄǽÀ­¤òƳ¤­½Ð¤·¤Þ¤¹¡¥

car(active)
⇒ACT
car([active])
⇒ACT, IVE
car([[active]])
⇒active

ºÇ½é¤Î¾õ¶·¤Ç¤Ï¡¤¥È¥Ã¥×¥ì¥Ù¥ë¤Ç¤Ïcar¤Î°ú¿ô¤òõ¤·¡¤‘active’ ¤¬ ¸«¤Ä¤«¤ê¤Þ¤¹¡¥M4¤Ï¥Þ¥¯¥í¤òŬÍѤ¹¤ëÁ°¤Î¤½¤Î°ú¿ô¤ÈÅù²Á¤Ê¤Î¤Ç¡¤ ‘active’¤ÏŸ³«¤µ¤ì¡¤·ë²Ì¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

car(ACT, IVE)
⇒ACT

ÆóÈÖÌܤξõ¶·¤Ç¤Ï¡¤¥È¥Ã¥×¥ì¥Ù¥ë¤Ïcar¤ÎºÇ½é¤ÇÍ£°ì¤Î°ú¿ô¤È¤·¤Æ ‘active’¤òÍ¿¤¨¤ë¤Î¤Ç¡¤·ë²Ì¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

active
⇒ACT, IVE

¤¹¤Ê¤ï¤Á¡¤¥Þ¥¯¥í¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¸å¤Ç¡¤°ú¿ô¤¬É¾²Á¤µ¤ì¤Þ¤¹¡¥»°ÈÖÌܤΠ¾õ¶·¤Ç¤Ï¡¤car¤Ï‘[active]’¤ò¼õ¤±¤È¤ê¡¤·ë²Ì¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ë ¤Ê¤ê¤Þ¤¹¡¥

[active]
⇒active

¾åµ­¤Ç¸«¤¿¤â¤Î¤ÈƱ¤¸¤Ç¤¹¤Í¡¥

¤è¤ê¸½¼ÂŪ¤ÊÎã¤òŬÍѤ·¤Æ¡¤¾åµ­¤ÎÎã¤ËÍ¿¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

car(int tab[10];)
⇒int tab10;
car([int tab[10];])
⇒int tab10;
car([[int tab[10];]])
⇒int tab[10];

¤¦¡Á¤ó¡© ºÇ½é¤Î¾õ¶·¤Ï´Êñ¤ËÍý²ò¤Ç¤­¤Þ¤¹¤¬¡¤¤Ê¤¼ÆóÈÖÌܤ¬´Ö°ã¤Ã¤Æ¤¤¤Æ¡¤»° ÈÖÌܤÏÀµ¤·¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©¤½¤ì¤òÍý²ò¤¹¤ë¤¿¤á¤Ë¡¤M4¤¬¥Þ¥¯¥í¤òŸ³«¤·¤¿¸å¡¤ ·ë²Ì¤È¤·¤ÆÀ¸¤¸¤ë¥Æ¥­¥¹¥È¤¬¤¹¤°¤Ë¥Þ¥¯¥í¤òŸ³«¤Ë½¾¤Ã¤Æ°úÍÑÉ䤬¼è¤ê½ü¤«¤ì¤ë ¤³¤È¤òÃΤäƤª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤Ï¡¤°úÍÑÉä¤Îºï½ü¤¬Æó²ó¹Ô¤Ê¤ï¤ì¤ë¤³¤È ¤ò°ÕÌ£¤·¤Þ¤¹ — ºÇ½é¤Ë°ú¿ô¤È¤·¤Æcar¥Þ¥¯¥í¤ËÅϤµ¤ì¤ë¤È¤­¡¤Æó²óÌÜ ¤Ïcar¥Þ¥¯¥í¤¬ºÇ½é¤Î°ú¿ô¤òŸ³«¤¹¤ë¤È¤­¤Ç¤¹¡¥

Autoconf¥Þ¥¯¥ícar¤Îºî¼Ô¤È¤·¤Æ¡¤¥æ¡¼¥¶¤¬car¤Î°ú¿ô¤òÆó½Å¤Î°ú ÍÑÉä¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤Ï´Ö°ã¤Ã¤Æ¤¤¤ë¤È¹Í¤¨¤ë¤è¤¦¤Ë¤·¡¤¥Þ¥¯¥í¤ò½¤ Àµ¤·¤Æ¤¯¤À¤µ¤¤¡¥°úÍÑÉä¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ëcar¤ËÂФ·¤Æ¡¤¤½¤ì¤ò qar¤È¸Æ¤Ö¤³¤È¤Ë¤·¤Þ¤·¤ç¤¦¡¥

define([qar], [[$1]])

¤½¤·¤Æ¡¤qar¤¬Å¬Àڤ˽¤Àµ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÄ´ºº¤·¤Æ¤ß¤Þ¤¹¡¥

qar([int tab[10];])
⇒int tab[10];

¤¢¤¡¡ª¤½¤¦¤·¤¿Êý¤¬Îɤµ¤½¤¦¤Ç¤¹¤Í¡¥

¤·¤«¤·¡¤¼«Ê¬¤¬¹Ô¤Ê¤Ã¤¿¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¸½ºß¤½¤Î°ú¿ô¤Ï¥ê¥Æ¥é¥ëʸ»ú Îó¤Ç¤¹¤¬¡¤°ú¿ô¤òŸ³«¤·¤¿·ë²Ì¤ò¥æ¡¼¥¶¤¬»ÈÍѤ·¤¿¤¤¾ì¹ç¡¤°úÍÑÉä¤Ç°Ï¤Þ ¤ì¤Æ¤¤¤Ê¤¤¥Þ¥¯¥í¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

qar(active)
⇒ACT

car¤òÍѤ¤¤Æ¹Ô¤Ê¤Ã¤Æ¤¤¤¿¤³¤È¤òºÆÀ¸À®¤·¤¿¤¤¾õ¶·¤ò¹Í¤¨¤Þ¤¹¡¥

car([active])
⇒ACT, IVE

¤Þ¤ÀÂÌÌܤǤ¹¤Í¡¥cpp¥Þ¥¯¥í¤ÎÁȤòÀ¸À®¤¹¤ë¥Þ¥¯¥í¤ò»ÈÍѤ·¤¿¤¤¾õ¶·¤ò¹Í ¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

define([my_includes], [#include <stdio.h>])
car([my_includes])
⇒#include <stdio.h>
qar(my_includes)
error→EOF in argument list

¤³¤Î¥Þ¥¯¥íqar¤Ï¡¤°ú¿ô¤òÆó½Å¤Ë°úÍÑÉä¤Ç°Ï¤à¤Î¤Ç¡¤¥æ¡¼¥¶¤Ï¥Þ¥¯¥í¤Î¸Æ ¤Ó½Ð¤·¤ò°úÍÑÉä¤Ç°Ï¤Þ¤Ê¤¤¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯¤è¤¦¶¯À©¤µ¤ì¤ë¤Î¤Ç¡¤¤½¤ì¤Ï´í¸±¤Ç¤¹¡¥ ¥«¥ó¥Þ¤È¤½¤Î¾¤Î¥¢¥¯¥Æ¥£¥Ö¤Ê¥·¥ó¥Ü¥ë¤Ï¡¤¥Þ¥¯¥í¤ËÅϤµ¤ì¤ëÁ°¤ËM4¤Ç²ò¼á¤µ¤ì¡¤ ¤½¤ì¤Ï¥æ¡¼¥¶¤¬´üÂÔ¤·¤Æ¤¤¤ë¼êË¡¤Ç¤Ï¤Ê¤¤¤³¤È¤¬Â¿¤¤¤â¤Î¤Ç¤¹¡¥¤Þ¤¿¡¤ qar¤Ï¡¤Â¾¤Î¥Þ¥¯¥í¤È¤Ï°Û¤Ê¤ëưºî¤ò¤¹¤ë¤Î¤Ç¡¤Autoconf¤Ç¤ÏÈò¤±¤ë¤Ù¤­ Îã³°¤Ë¤Ê¤ê¤Þ¤¹¡¥