GNU C library ±Ê¼Ç1
ÄÚÈÝ£ºIntroduction ºÍ Error Reporting
1. glibc ËùʵÏÖÈ«²¿»ò²¿·Ö¹æ·¶ÏµĹ¦ÄÜÓÐ
ISO C: The international standard for the C programming language.
POSIX: The ISO/IEC 9945 (aka IEEE 1003) standards for operating systems.
Berkeley Unix: BSD and SunOS.
SVID: The System V Interface Description.
XPG: The X/Open Portability Guide.
Èç¹ûÖ»ÐèÒª ISO C µÄ¹¦ÄÜ£¬ÄÜÔÚ±àÒëʱʹÓà -ansi Ñ¡Ïî¡£glibc ʵÏÖÁËÈ«²¿µÄ ISO C ¹¦ÄÜ¡£POSIX ÊÇ ISO C µÄ³¬¼¯£¬Ëû¶îÍâµÄ°üÀ¨ÁË file system interface primitives¡¢device-specific terminal control functions¡¢process control functions¡£Berkeley Unix ʵÏÖÁËǰÁ½Õß¶àÊý¹¦ÄÜ£¬Ô´ÓÚ 4.2 BSD¡¢4.3 BSD, and 4.4 BSD Unix ϵͳ£¨Ò»°ã³ÆÎª Berkeley Unix£©¼° SunOS £¨»ùÓÚ 4.2 BSD ²»¹ýÓÖʵÏÖÁË System V µÄ²¿·Ö¹¦ÄÜ£©£¬Ëû¶îÍâµÄ°üÀ¨ÁË symbolic links¡¢the select function¡¢BSD signal functions¡¢sockets¡£SVID ÊÇ System V Interface Description£¬Ò²¾ÍÊÇÃèÊö AT&T Unix System V operating system µÄÒ»·ÝÎļþ£¬Ä³ÖÖÒâÒåÉÏÊÇ POSIX µÄ³¬¼¯£¬²»¹ýûÓÐÒÑÓÐµÄ Unix ʵÏÖÁËÆäÈ«²¿¹¦ÄÜ£¬glibc Ò²½ö½öʵÏÖÁËÆä²¿·Ö¹¦ÄÜ¡£Ëû¶îÍâʵÏֵŦÄܰüÀ¨ the methods for inter-process communication£¨IPC£©¡¢shared memory¡¢hsearch¡¢drand48 ϵÁк¯Êý¡¢fmtmsg¡¢Ò»Ð©ÆäËûµÄÊýѧº¯Êý¡£XPG£¨The X/Open Portability Guide£©ÃèÊöÁËʲôÑùµÄϵͳÂú×ãÀà Unix ϵͳµÄ»ù±¾ÐèÒª£¬glibc ·þ´Ó¸ÃÐèÇó¡£
2. Í·ÎļþÀïÃæÄ³Ð©º¯ÊýµÄʵÏÖʹÓà macro ×öµ½µÄ£¬ÀíÓÉÊÇÒ»°ãÕâÑù»á¸ü¿ì¡£²»¹ý²»±Ø²î±ðËûÃÇ£¬ÒòΪһ°ã¶¨ÒåÁËͬÃûµÄº¯Êý£¬Èç abs(int) ¼ÈÓк¯Êý¶¨ÒåÒ²ÓÐ macro ¶¨Ò壬ʹÓà & ²Ù×÷ʱ£¬ÓÉÓÚ macro µ÷ÓÃʱ²»ÄÜÆ¥Åäµ½ () Òò´ËÈÔÈ»ÄÜÈ¡µ½º¯ÊýµÄµØÖ·¡£Èç¹ûÐèÒªÏÔʽµÄµ÷Óú¯ÊýÄÜÓà () ½«º¯ÊýÃû°üΧ£¬Èç (abs)(3)£¬ÓÖ»òʹÓà #undef abs ½«¶¨Òå¹ýµÄ macro È¡Ïû¡£
3. ISO C ÔÊÐíÖØ¸´ #include Í·Îļþ£¬²»¹ý glibc ʹÓÃÁË #define #ifndef µÈÔ¤´¦ÀíÆ÷ÃüÁî±ÜÃâÁËͬһͷÎļþÖØ¸´×°ÔØ£¬Òò´ËÄÜ·ÅÐÄµÄ #include glibc µÄÍ·Îļþ¡£
4. ³ýÁË ISO C ¶¨ÒåµÄһЩ±£Áô×Ö£¬ÓÉÓÚ glibc ʵÏÖÁËһЩ¶îÍâµÄ¹¦ÄÜ£¬½¨Ò鲻ҪʹÓÿÉÄܺÍÖ®³åÍ»µÄһЩÃüÃû·½Ê½¡£
5. Ôõô¿ªÆôijÖÖ±ê׼Ϡglibc µÄ¹¦ÄÜ¡£Ç°ÃæÌáµ½ÄÜÀûÓà -ansi ½ö½öʹÓà ISO C ÒÔÄڵŦÄÜ¡£ÆäËûµÄͨ¹ý¶¨Òå macro ʵÏÖÌõ¼þ±àÁª£¬ÊµÏÖ·½Ê½·ÖÁ½ÖÖ£¬ÄÜÔÚ .c ÀïÃæ #define£¬»òÓÃ
Ïà¹ØÎĵµ£º
ÎÒÒ»Ö±Ïë×öÒ»¸öÈí¼þ³öÀ´£¬Ö»ÊǼòµ¥µÄ£¬±ÈÈç˵һ¸ö¼Ó¼õ³Ë³ýµÄEXE¡£¿ÉÊÇÎÒÖªµÀÎÒ´íÁË£¬ÎÒ×î½üÑ¡ÐÞÁËÒ»Ãŵç×Ó¹¤³ÌÉè¼ÆÓëÖÆ×÷ºó²ÅÁ˽â±à³ÌµÄÄ¿µÄºÍ¹¤¾ßµÄ¶àÑùÐÔ¡£²»Í¬µÄÈí¼þÌṩ²»Í¬µÄ±àÒë»·¾³£¬ÎÒ·¢ÏÖÄ£ÄâÈí¼þµÄÇ¿µÄ¡£ÎÒʱ³£ÏëÎÒÊDz»ÊÇ¿ÉÒÔͨ¹ýÎÒÏÂÔØ°²×°µÄÈí¼þÀ´Ñ§Ï°Ð©Ô´³ÌÐò¡£ÊǵÄÓÐһЩ£¬¿ÉÊÇÍêÈ«¿´²»¶®£¬³ýÁË ......
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
char a = 'a';
......
ͻ񻣼
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch ......
Ò»¸ö¶¨ÒåΪvolatileµÄ±äÁ¿ÊÇ˵Õâ±äÁ¿¿ÉÄܻᱻÒâÏë²»µ½µØ¸Ä±ä£¬ÕâÑù£¬±àÒëÆ÷¾Í²»»áÈ¥¼ÙÉèÕâ¸ö±äÁ¿µÄÖµÁË¡£¾«È·µØËµ¾ÍÊÇ£¬ÓÅ»¯Æ÷ÔÚÓõ½Õâ¸ö±äÁ¿Ê±±ØÐëÿ´Î¶¼Ð¡ÐĵØÖØÐ¶ÁÈ¡Õâ¸ö±äÁ¿µÄÖµ£¬¶ø²»ÊÇʹÓñ£´æÔڼĴæÆ÷ÀïµÄ±¸·Ý¡£ÏÂÃæÊÇvolatile±äÁ¿µÄ¼¸¸öÀý×Ó£º
1). ²¢ÐÐÉ豸µÄÓ²¼þ¼Ä´æÆ÷£¨È磺״̬¼Ä´æÆ ......
vaϵÁкêµÄÓ÷¨µÄÒ»°ã²½Ö裺
vsptr(char *format, ...) //ÇмǴ˴¦µÄ¸ñʽ
{
va_list argptr;
va_start(argptr, format); //ʹµÃargptrÖ¸ÏòÒÔformat¿ªÍ·µÄ´æ´¢¿Õ¼ä
va_arg(argptr, type); //È¡´«µÝµÄ²ÎÊý
......