#define ÀÌ·±°Åµµ ÀÖ¾î¿ä~ (1999³â 4¿ù 3ÀÏ)
Unix Á¤º¸ Posted by 1009 on Thursday June 29, @01:17PM

C¿¡¼­ ¸ÞÅ©·Î¹®(#define)À¸·Î constant µîÀ» Á¤ÀÇÇØ¼­ »ç¿ëÇÏ¸é ÆÇµ¶¼ºÀ» ³ôÀϼö ÀÖ°í, ³ªÁß¿¡ ÇÁ·Î±×·¥À» º¯°æÇϰųª ¾÷µ¥ÀÌÆ®ÇÒ¶§ ¸¹Àº µµ¿òÀÌ µÈ´Ù. ¶Ç #define ¹®À» »ç¿ëÇØ¼­ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ¼ö ÀÖ´Ù´Â °Ç ¸¹ÀÌ ¾Ë°í ÀÖÀ¸¸®¶ó »ý°¢µÈ´Ù. ±×¸®°í ¸ÞÅ©·ÎÀÇ Æ¯¼º»ó º¸Åë ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â °Í°ú ´Þ¸® ÇÁ·Î±×·¥ ¼Ò½º »ó¿¡ °°Àº ¿ÀºêÁ§Æ®Äڵ带 »ðÀÔÇϱ⠶§¹®¿¡ ¼Óµµ¸¦ ¿äÇÏ´Â ÇÁ·Î±×·¥¿¡¼­´Â ¸ÞÅ©·Î¸¦ ÀÌ¿ëÇÏ´Â °Åµµ »ý°¢ÇØ º¼¼ö ÀÖ´Ù. (inline ÇÔ¼ö¸¦ »ç¿ëÇϴ°͵µ ÁÁ°ÚÁö¸¸...) ¶Ç ¿ÀºêÁ§Æ®Äڵ尡 µû·Î µé¾î°¡±â ¶§¹®¿¡, ¾îµð¼­ ¸ÞÅ©·ÎÇÔ¼ö¸¦ ºÒ·¶´ÂÁö __FUNCTION__ µîÀ» üũÇÏ¸é ¾Ë¼ö ÀÖ´Ù.

ÀÌÁ¦ Àß ¾Ë·ÁÁöÁö ¾ÊÀº(?) ±â´ÉÀ» ¾Ë¾Æº¸ÀÚ! ÇϳªÀÇ intÇü º¯¼ö¸¦ Ãâ·ÂÇÏ·Á°í ÇÑ´Ù¸é,
#define PRINT_INT(a) printf(#a " = %d\n",a)
ÀÌ·¸°Ô Á¤ÀÇÇϰí,
int i=5, j=3;

PRINT_INT(i);
PRINT_INT(j);
À§¿Í°°ÀÌ ¸ÞÅ©·Î ÇÔ¼ö¸¦ ºÎ¸£¸é, °á°ú´Â
i = 5
j = 3
°¡ ³ª¿Â´Ù. Áï, #º¯¼ö´Â º¯¼ö¸¦ µû¿ÈÇ¥·Î ¹­¾îÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. Àß ÀÀ¿ëÇÏ¸é ÆíÇÏ´Ù^^. gcc¿¡¼­´Â Å×½ºÇغ» °á°ú "#a = %d\n" ÇüÅ·ΠÁ൵ Á¦´ë·Î 󸮸¦ Çϴµ¥ ÀÌ°Ç Ç¥ÁØ C¿¡¼­ µÇ´ÂÁö´Â ¸ð¸£°Ú´Ù. ´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡¼­´Â Å×½ºÆ®¸¦ ¸øÇß´Ù.

¶Ç ÇѰ¡Áö À¯¿ëÇÑ ±â´ÉÀÌ Àִµ¥, concat±â´ÉÀÌ´Ù. ¹Ýº¹ÀÌ ¸¹Àº ¼±¾ð ºÎºÐ¿¡ »ç¿ëÇÏ¸é ÆíÇÏ´Ù. ÇÏÁö¸¸ ³Ê¹« ¸¹ÀÌ »ç¿ëÇÏ¸é ÆÇµ¶¼ºÀÌ ¶³¾îÁú¼ö ÀÖ´Ù. ÇÊÀÚÀÇ °æ¿ì Á¦ÇÑµÈ ºÎºÐ³»¿¡¼­¸¸ »ç¿ëÇÏ°í »ç¿ëÀÌ ³¡³ª¸é Áï½Ã #undef ÇØÁØ´Ù. ÀûÀýÇÑ ¿¹Á¦´Â ¾Æ´ÏÁö¸¸...
#define CONCAT(a,b)  a##b

int ij=7;
PRINT_INT(CONCAT(i,j));
¾î¶² °ªÀÌ ³ª¿ÃÁö »ó»óÇØº¸ÀÚ~

ÇÁ·Î±×·¥ ¼Ò½º: define.c


xterm¿¡ Ä®¶ó Ãâ·Â (1999³â 4¿ù 6ÀÏ) | GNU make¿Í Berkeley's Parallel make (1999³â 4¿ù 1ÀÏ)  >

 

( Reply )