C ±ê×¼¿â º¯Êý Ô´´úÂëµÄʵÏÖ ºÍ ·ÖÎö
//¿âº¯ÊýʵÏÖ
char *strcat (char *dst, const char *src)
{
char *p = dst;
while (*p)
p++;
while ((*p++ = *src++))
;
return dst;
}
char *strncat (char *s1, const char *s2, long unsigned int n)
{
char *dest = s1;
char c;
while (*s1) s1++;
c = '\0';
while (n > 0)
{
c = *s2++;
*s1++ = c;
if (c == '\0')
return dest;
n--;
}
if (c != '\0')
*s1 = '\0';
return dest;
}
char * strcpy (char *d, const char *s)//
{
char *r = d;
while ((*d++ = *s++));
return r;
}
char *strncpy (char *s1, const char *s2, long unsigned int n)
{
char *dest = s1;
for (; *s2 && n; n--) //n Èç¹û´óÓÚs2µÄ³¤¶È£¬ÔòÉèÖÃ0
*s1++ = *s2++;
while (n--)
*s1++ = 0;
return dest;
}
void * memcpy (void *dst, const void *src, long unsigned int n)
{
const char *srcp;
char *dstp;
srcp = src;
dstp = dst;
while (n-- != 0)
*dstp++ = *srcp++;
return dst;
}
void *memmove (void *dst, const void *src, long unsigned int n)
{
const char *srcp;
char *dstp;
srcp = src;
dstp = dst;
if (srcp < dstp)
while (n-- != 0)
dstp[n] = srcp[n];
else
while (n-- != 0)
*dstp++ = *srcp++;
return dst;
}
void *memset (void *dst, int c, long unsigned int n)
{
while (n-- != 0)
n[(char *) dst] = c; // ¼´ (char*)dst[n] = c;
return dst;
}
¿âº¯ÊýÁ¦Çó¼ò½à£¬Òò´Ë´æÔÚÒ»¶¨µÄ°²È«µÄÎÊÌ⣬ÕâÊÇÔÚʹÓùý³ÌÖÐÌØ±ð×¢ÒâµÄµØ·½¡£Ò²Òò´ËVC2005²ÅÍÆ³ö_sµÄËùνµÄ°²È«º¯Êý¡£Ò²¾ÍÊǶà¼ÓÁËÅжÏλ¡£
Ïà¹ØÎĵµ£º
±¾ÎĽéÉÜÁËʹÓÃPro*C/C++ÔÚVisual
C++»·¾³Ï¿ª·¢OracleÊý¾Ý¿â½Ó¿Ú³ÌÐòµÄ·½·¨
Éè¼ÆË¼Â·ÆäʵÕâÑù£ºÊ×ÏÈͨ¹ýVC½¨Á¢Ò»¸ö¹¤³Ì£¬×Ô¶¯»¯½¨Á¢MAKEFILE£¬UNIXÐèÒª×Ô¼ºÐ´MAKEFILE¡£
Æä´ÎÅäÖÃVCµÄ»·¾³£¬½«PROCµÄ.H£¬.LIBµÄ·¾¶¼ÓÈëDERECTIRY¡£Ð´Ò»¸öPCÎļþ£¬¼´PROCÎļþ¡£·Åµ½¹¤³ÌÏàÓ¦µÄĿ¼Ï¡£È»ºó°ÑPCÎļþ¼ÓÈ빤³Ì¡£Ê¹ÓÃPROCUI.E ......
1.1 ±äÁ¿×÷ÓÃÓò
1.1.1 ¼¸ÖÖ³£¼ûÀàÐͱäÁ¿µÄ×÷ÓÃÓò
×÷ÓÃÓò£¨scope£©»òÕ߿ɼûÐÔÊÇÖ¸±äÁ¿ÔÚ³ÌÐòÄڵĿɼûºÍ¿ÉÒýÓõķ¶Î§¡£
±ÈÈç:
1¡¢ È«¾Ö±äÁ¿ÔÚËùÓеÄÎļþ¶¼¿É¼û£¬ÄÇËûµÄ×÷ÓÃÓò¾ÍÊÇËùÓÐÎļþ£»
2¡¢ static¶¨ÒåµÄÈ«¾Ö±äÁ¿£¬Ö»ÔÚ¶¨ÒåËüµÄÔ´ÎļþÖпɼû£¬ÄÇËûµÄ×÷ÓÃÓò¾ÍÊÇÆäËùÔÚµÄÔ´Îļþ£»
3¡¢ º¯ÊýÄÚ²¿µÄ¾Ö²¿±äÁ¿£¬Ö»ÔÚÆäº¯Êý ......
Ô¤´¦ÀíÆ÷£¨Preprocessor£©
¡¡
¡¡¡¡1 . ÓÃÔ¤´¦ÀíÖ¸Áî#define ÉùÃ÷Ò»¸ö³£Êý£¬ÓÃÒÔ±íÃ÷1ÄêÖÐÓжàÉÙÃ루ºöÂÔÈòÄêÎÊÌ⣩
¡¡
¡¡¡¡#define SECONDS_PER_YEAR £¨60 * 60 * 24 * 365£©
¡¡
¡¡¡¡ÎÒÔÚÕâÏë¿´µ½¼¸¼þÊÂÇ飺
¡ï¡£#define Óï·¨µÄ»ù±¾ÖªÊ¶£¨ÀýÈ磺²»ÄÜÒԷֺŽáÊø£¬À¨ºÅµÄʹÓ㬵ȵȣ©
¡¡
¡ ......
GCC°²×°³É¹¦,ËùÐèÎļþÓÐ:
libf2c-3.3.2-1.i386.rpm
libstdc++-devel-3.3.2-1.i386.rpm
glibc-kernheaders-2.4-8.36.i386.rpm
glibc-headers-2.3.2-101.i386.rpm
glibc-devel-2.3.2-101.i386.rpm
gcc-objc-3.3.2-1.i386.rpm
binutils-2.14.90.0.6-3.i386.rpm
gcc-3.3.2-1.i386.rpm
gcc-c++-3.3.2-1.i386.rpm
autom ......
ÄÚºËÆô¶¯µÄÏÖÔÚÒѾÊÇ¿ªÊ¼Ö´Ðк¯Êýstart_kernelº¯ÊýÁË¡£start_kernelº¯ÊýÔÚinit/main.cÖж¨Òå¡£start_kernelº¯ÊýÖ»ÊÇÍê³É
ÏàÓ¦µÄ½á¹¹µÄ³õʼ»¯ÈÎÎñ¡£
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
ÔÚubootµÄÒ»Ö±¹ý³ÌÖУ¬uboo ......