Next: , Previous: Arguments, Up: Definitions   [Contents][Index]


4.3 ¥Þ¥¯¥í¤ÎÆÃ¼ì¤Ê°ú¿ô

Í¿¤¨¤é¤ì¤¿¼Â°ú¿ô¡Êactual arguments¡Ë¤Î¸Ä¿ô¤äÁ´¤Æ¤Î¼Â°ú¿ô¤ò¤Þ¤È¤á¤ÆÉ½¤¹¤¿¤á¤Î ÆÃÊ̤Êɽµ­ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£

¥Þ¥¯¥í¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤ËÍ¿¤¨¤é¤ì¤¿¼Â°ú¿ô¤Î¸Ä¿ô¤Ï¡¢ Ÿ³«Íѥƥ­¥¹¥È¤ÎÃæ¤Ç$#¤È¤·¤ÆÉ½¤·¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤ÆÍ¿¤¨¤é¤ì¤¿¼Â°ú¿ô¤Î¸Ä¿ô¤òɽ¼¨¤¹¤ë¥Þ¥¯¥í¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

define(`nargs', `$#')
⇒
nargs
⇒0
nargs()
⇒1
nargs(arg1, arg2, arg3)
⇒3

Ÿ³«Íѥƥ­¥¹¥È¤ÎÃæ¤Ç$*¤È¤¤¤¦É½µ­¤ò¤¹¤ë¤³¤È¤Ç¡¢ Á´¤Æ¤Î¼Â°ú¿ô¤ò(¥¯¥©¡¼¥È¤Ï¤»¤º¤Ë)¥³¥ó¥Þ¤Ç¶èÀڤ俤â¤Î¤òɽ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

define(`echo', `$*')
⇒
echo(arg1,    arg2, arg3 , arg4)
⇒arg1,arg2,arg3 ,arg4

°ú¿ô¤ò¤½¤ì¤¾¤ì¥¯¥©¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤¬¤è¤¯¤¢¤ê¤Þ¤¹¤¬¡¢ ¤½¤ó¤Ê¤È¤­¤Ï$@¤È¤¤¤¦É½µ­¤ò»È¤¤¤Þ¤¹¡£ ¤³¤ì¤Ï³Æ°ú¿ô¤¬¥¯¥©¡¼¥È¤µ¤ì¤ë¤³¤È¤ò½ü¤±¤Ð$*¤ÈƱ¤¸¤Ç¤¹¡£

define(`echo', `$@')
⇒
echo(arg1,    arg2, arg3 , arg4)
⇒arg1,arg2,arg3 ,arg4

°úÍÑÉä¤Ï¤É¤³¤Ë¹Ô¤Ã¤¿¤Î¤Ç¤·¤ç¤¦¤«? ¤â¤Á¤í¤óŸ³«¸å¤Î¥Æ¥­¥¹¥È¤ò ºÆÁöºº¤·¤¿¤È¤­¤Ëm4¤¬¿©¤Ù¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤¹¡£ °ã¤¤¤ò¸«¤ë¤¿¤á¤Ë¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

define(`echo1', `$*')
⇒
define(`echo2', `$@')
⇒
define(`foo', `This is macro `foo'.')
⇒
echo1(foo)
⇒This is macro This is macro foo..
echo2(foo)
⇒This is macro foo.

¤³¤ì¤¬Íý²ò¤Ç¤­¤Ê¤¤¤È¤­¤ÏSee Trace¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Ÿ³«Íѥƥ­¥¹¥È¤Ëµ­¹æ‘$’¤¬Â¸ºß¤·¡¢¤½¤ì¤Ë³¤¯Éôʬ¤¬m4¤ËÍý²ò¤Ç¤­¤ë ¤â¤Î¤Ç¤Ê¤¤¤È¤­¤Ï¡¢‘$’¤Ï¾¤Î¥Æ¥­¥¹¥È¤ÈƱ¤¸¤è¤¦¤Ë ¥Þ¥¯¥íŸ³«¸å¤Î¥Æ¥­¥¹¥È¤ØÃ±¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£

define(`foo', `$$$ hello $$$')
⇒
foo
⇒$$$ hello $$$

¥Þ¥¯¥í¤ò‘$12’¤Ê¤É¤ËŸ³«¤µ¤»¤¿¤¤¤È¤­¤Ï¡¢ $¤Î¸å¤Ë°ìÁȤΰúÍÑÉä¤òÃÖ¤­¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤Ã¤Æ¡¢m4¤¬¤½¤Î$µ­¹æ¤ò°ú¿ô¤Ø¤Î»²¾È¤À¤È²ò¼á¤·¤Æ¤Þ¤¦¤Î¤ò Ëɤ°¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£