¶ÔCµÄprintfº¯ÊýµÄ¿É±ä³¤²ÎÊýʵÏֵķÖÎö
ת×Ô¡¾http://tech.ddvip.com/2008-08/121825219252306_3.html¡¿
ÄÚÈÝÕªÒª£ºÒ»Ö±ÒÔÀ´¶¼¾õµÃprintfËÆºõÊÇcÓïÑÔ¿âÖй¦ÄÜ×îÇ¿´óµÄº¯ÊýÖ®Ò»£¬²»½öÒòΪËüÄܸñʽ»¯Êä³ö£¬¸üÔÚÓÚËüµÄ²ÎÊý¸öÊýûÓÐÏÞÖÆ£¬Òª¼¸¸ö¾Í¸ø¼¸¸ö£¬À´Õß²»¾Ü¡£printfÕâÖÖ¶Ô²ÎÊý¸öÊýºÍ²ÎÊýÀàÐ͵ÄÇ¿´óÊÊÓ¦ÐÔ£¬ÈÃÈ˲úÉúÁ˶ÔËü½øÐÐ̽Ë÷µÄŨºñÐËȤ¡£
¡¾1. ʹÓÃÇéÐÎ ¡¿
int a =10;
double b = 20.0;
char *str = "Hello world";
printf("begin print
");
printf("a=%d, b=%.3f, str=%s", a, b, str);
...
´ÓprintfµÄʹÓÃÇé¿öÀ´¿´£¬ÎÒÃDz»ÄÑ·¢ÏÖÒ»¸ö¹æÂÉ£¬¾ÍÊÇÎÞÂÛÆä¿É±äµÄ²ÎÊýÓжàÉÙ¸ö£¬printfµÄµÚÒ»¸ö²ÎÊý×ÜÊÇÒ»¸ö×Ö·û´®¡£¶øÕýÊÇÕâµÚÒ»¸ö²ÎÊý£¬Ê¹µÃËü¿ÉÒÔÈ·ÈϺóÃæ»¹ÓÐÓжàÉÙ¸ö²ÎÊýÎ²Ëæ¡£¶øÎ²ËæµÄÿ¸ö²ÎÊýÕ¼ÓõÄÕ»¿Õ¼ä´óСÓÖÊÇͨ¹ýµÚÒ»¸ö¸ñʽ×Ö·û´®È·¶¨µÄ¡£È»¶øprintfµ½µ×ÊÇÔõÑùÈ¡µÚÒ»¸ö²ÎÊýºóÃæµÄ²ÎÊýÖµµÄÄØ£¬Çë¿´ÈçÏ´ú¡£
¡¾2. printf º¯ÊýµÄʵÏÖ¡¿
//acenv.h
typedef char *va_list;
#define¡¡_AUPBND¡¡¡¡¡¡¡¡(sizeof (acpi_native_int) - 1)
#define¡¡_ADNBND¡¡¡¡¡¡¡¡(sizeof (acpi_native_int) - 1)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
#define _bnd(X, bnd)¡¡¡¡(((sizeof (X)) + (bnd)) & (~(bnd)))
#define va_arg(ap, T)¡¡ (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
#define va_end(ap)¡¡¡¡¡¡(void) 0
#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
//start.c
static char sprint_buf[1024];
int printf(char *fmt, ...)
{
¡¡¡¡va_list args;
¡¡¡¡int n;
¡¡¡¡va_start(args, fmt);
¡¡¡¡n = vsprintf(sprint_buf, fmt, args);
¡¡¡¡va_end(args);
¡¡¡¡write(stdout, sprint_buf, n);
¡¡¡¡return n;
}
//unistd.h
static inline long write(int fd, const char *buf, off_t count)
{
¡¡¡¡return sys_write(fd, buf, count);
}
¡¾3. ·ÖÎö¡¿
´ÓÉÏÃæµÄ´úÂëÀ´¿´£¬printfËÆºõ²¢²»¸´ÔÓ£¬Ëüͨ¹ýÒ»¸öºêva_start°ÑËùÓеĿɱä²ÎÊý·Åµ½ÁËÓÉargsÖ¸ÏòµÄÒ»¿éÄÚ´æÖУ¬È»ºóÔÙµ÷ÓÃvsprintf. ÕæÕýµÄ²ÎÊý¸öÊýÒÔ¼°¸ñʽµÄÈ·¶¨ÊÇÔÚvsprintf¸ã¶¨µÄÁË¡£ÓÉÓÚvsprintfµÄ´úÂë±È½Ï¸´ÔÓ£¬Ò²²»ÊÇÎÒÃÇÕâÀïÒªÌÖÂÛµÄÖØµã£¬ËùÒÔÏÂÃæ¾Í²»ÔÙÁгöÁË¡£ÎÒÃÇÕâÀïÒªÌÖÂÛµÄÖØµãÊÇva_start(ap, A)ºêµÄʵÏÖ£¬Ëü¶Ô¶¨Î»´Ó²ÎÊýAºóÃæµÄ²ÎÊýÓÐÖØ´óµÄÖÆµ¼ÒâÒå¡£ÏÖÔÚ°Ñ #define va_start(ap, A)
Ïà¹ØÎĵµ£º
ÓüÇʱ¾Ð´C³ÌÐò£¬²¢±àÒë¡£ ¸Õ×°ºÃµÄϵͳ
ÖÐÒѾÓÐGCCÁË£¬µ«ÊÇÕâ¸öGCCʲôÎļþ¶¼²»ÄܱàÒ룬ÒòΪûÓÐһЩ±ØÐëµÄÍ·Îļþ£¬ËùÒÔÒª°²×°build-essentialÕâ¸öÈí¼þ
°ü£¬°²×°ÁËÕâ¸ö°ü»á×Ô¶¯°²×°ÉÏg++,libc6-dev,linux
-libc-dev,libstdc++6-4.1-devµÈһЩ±ØÐëµÄÈí¼þºÍÍ·ÎļþµÄ¿â¡£
¿ÉÒÔÔÚÐÂÁ¢µÃÀïÃæË ......
ÆÕͨ±äÁ¿ÊÇÖ±½Ó´«Öµshow(int a,int b)
Ö¸Õë±äÁ¿´«µÝµØÖ·show(int *a,int *b)
ÒýÓñäÁ¿ÊÇÒþʽ´«µØÖ· 1:int x;void show(int &x)£¬Êµ¼Ê´«µÝµÄÊÇxµÄµØÖ·p£¬µ«ÊǺ¯ÊýÄÚ²¿Ê¹ÓÃxʱ»á×Ô¶¯±ä³É*p
  ......
¸üа汾1.0.1£º¸Ã°æ±¾½â¾öÁË֮ǰ1.0.0°æ±¾ÖÐÕÒ²»µ½Á´½Ó¿âlibc.libµÄÎÊÌ⣬ÒÔ¼°IDEϵã»÷Project²Ëµ¥³öÏÖµÄBUG¡£ÏÂÔØµØÖ·£ºhttp://download.csdn.net/source/1597132
Doctors±àÒëÆ÷ÄÚ²¿ÊµÏÖ
For version 1.0.1
³ö´¦£ºhttp://blog.csdn.net/huyansoft
×÷ÕߣººúÑå
Copyright(c) 2009£¬All Rights Reserved
&nbs ......
¸ù¾Ý¡¶programming in lua¡·µÚ26ÕµÄÄÚÈÝ£¬ÎÒ×ö³öÀ´µÄÈçÏ£º
1.
Ê×ÏÈ£¬ÎÒµÄLuaĿ¼Ϊ£ºD:\lua5.1\
»·¾³Îª windows ; VC++express edition 2008 ; Lua5.1.4 ; Notepad++
µ±È»£¬ÄãÐèÒªÔÚVC++2008ÖÐÅäÖúÃlua£º
ÕâÀïÏȲ»¶à×ö½âÊÍ£¬¼ÙÉèÄãÒѾÅäÖúÃÁË¡£
2.
& ......