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


4.2 ¥Þ¥¯¥í¤Î°ú¿ô

¥Þ¥¯¥í¤Ï°ú¿ô¤ò¼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£nÈÖÌܤΰú¿ô¤ÏŸ³«Íѥƥ­¥¹¥È¤ÎÃæ¤Ç¤Ï $n¤È¤·¤Æ½ñ¤­¼¨¤µ¤ì¡¢¥Þ¥¯¥í¤¬Å¸³«¤µ¤ì¤ë¤È¤­¤ËnÈÖÌܤΠ¼Â°ú¿ô¡Êactual argument¡Ë¤ËÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹¡£ ¼¡¤ÎÎã¤Ï2¤Ä¤Î°ú¿ô¤ò¼è¤ë¥Þ¥¯¥í¤Ç¤¹¡£2¤Ä¤Î°ú¿ô¤Î½çÈÖ¤òñ¤Ë¸ò´¹¤·¤Þ¤¹¡£

define(`exch', `$2, $1')
⇒
exch(arg1, arg2)
⇒arg2, arg1

¤³¤ì¤Ïdefine¤Ø¤Î°ú¿ô¤Î½çÈÖ¤òµÕ¤Ë¤·¤¿¤¤¤È¤­¤Ê¤É¤Ë»È¤¨¤Þ¤¹¡£

define(`exch', `$2, $1')
⇒
define(exch(``expansion text'', ``macro''))
⇒
macro
⇒expansion text

Æó½Å¤Ë¤Ê¤Ã¤¿°úÍÑÉä¤ÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤ÏSee Quoting Arguments¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

GNU m4¤Ç¤Ï‘$’¤Ë³¤¯¿ô»ú¤ÏÊ£¿ô¤Î·å¤Ç¤â¤è¤¤¤Î¤Ç¡¢ ¥Þ¥¯¥í¤Ï¤¤¤¯¤Ä¤Ç¤â°ú¿ô¤ò¼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤È°ã¤¤UNIX¤Îm4¤Ç¤Ï1·å¤Î¿ô»ú¤·¤«Ç§¼±¤µ¤ì¤Þ¤»¤ó¡£

ÆÃ¼ì¤Ê¥±¡¼¥¹¤È¤·¤Æ¡¢0ÈÖÌܤΰú¿ô$0¤Ï¾ï¤Ë¸½ºßŸ³«¤µ¤ì¤Æ¤¤¤ë¥Þ¥¯¥í¤Î̾Á° ¤È¤Ê¤ê¤Þ¤¹¡£

define(`test', ``Macro name: $0'')
⇒
test
⇒Macro name: test

¥¯¥©¡¼¥È¤µ¤ì¤¿¥Æ¥­¥¹¥È¤òŸ³«¸å¤Î¥Æ¥­¥¹¥È¤Ë´Þ¤á¤¿¤¤»þ¤Ï¡¢ ¥¯¥©¡¼¥È¤ÏÆþ¤ì»Ò¤Ë¤Ç¤­¤ë¤³¤È¤ò»×¤¤½Ð¤·¤Þ¤·¤ç¤¦¡£¤·¤¿¤¬¤Ã¤Æ¡¢

define(`foo', `This is macro `foo'.')
⇒
foo
⇒This is macro foo.

Ÿ³«¤µ¤ì¤¿¥Æ¥­¥¹¥È¤Ë´Þ¤Þ¤ì¤ë‘foo’¤Ï¡¢ ¥¯¥©¡¼¥È¤µ¤ì¤¿Ê¸»úÎó¡Êquoted string¡Ë¤Ç¤¢¤ê̾Á°¡Êname¡Ë¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢ ºÆÁöºº¤Ë¤è¤Ã¤ÆÅ¸³«¤Ï¤µ¤ì¤º¡¢ °úÍÑÉ䤬¤Ï¤®¼è¤é¤ì¤ë¤À¤±¤Ç¤¹(see Syntax)¡£