C Runtime LibraryÀ´Àú, API, MFC, ATL¹ØÏµ
CRTÔÏÈÊÇÖ¸Microsoft¿ª·¢µÄC Runtime Library£¬ÓÃÓÚ²Ù×÷ϵͳµÄ¿ª·¢¼°ÔËÐС£ºóÀ´ÔÚ´Ë»ù´¡ÉÏ¿ª·¢ÁËC++
Runtime Library£¬ËùÒÔÏÖÔÚCRTÊÇÖ¸Microsoft¿ª·¢µÄC/C++ Runtime
Library¡£ÔÚVCµÄCRT/SRCĿ¼Ï£¬¿ÉÒÔ¿´µ½CRTµÄÔ´Â룬²»½öÓÐCµÄ£¬Ò²ÓÐC++µÄ¡£
CRTÔÏȵÄÄ¿µÄ¾ÍÊÇÖ§³Ö²Ù×÷ϵͳµÄÔËÐС£ÒòΪWindows²Ù×÷ϵͳ³ý»ã±à²¿·ÖÍ⣬¶¼ÊÇÓÃC/C++±àдµÄ£¬ËùÒÔÄں˼°Ðí¶à¹Ø¼ü·þÎñ¶¼ÔÚCRTÉÏÔËÐÐ
£¨ËüÃǶ¼²ÉÓÃdll¼¼Êõ¶¯Ì¬Á´½Ó£©¡£´ËÍ⣬ÓÃ
VC±àдµÄC/C++³ÌÐòÒ²Óõ½ËüÃÇ£¨¿ÉÒÔ¶¯Ì¬Á´½Ó£¬Ò²¿ÉÒÔ¾²Ì¬Á´½Ó£¬Ç°ÕßÔËÐÐʱÐèҪϵͳÖÐÒѰ²×°CRTµÄdll£¬ºóÕß²»ÐèÒª£©¡£¿ÉÒÔ˵£¬CRT¾ÍÊÇ
Microsoft±àдWindowsʱʹÓõĵͲãÀà¿â¡£È»ºó£¬ËüÓÖ±»µ±×÷C++±ê×¼¿âµÄÒ»¸öʵÏÖ°üº¬ÔÚÁËVCϵÁÐÖУ»ÎÒÃÇÔÚVCÖÐʹÓõÄC++±ê×¼¿â£¬
Æäʵ¾ÍÊÇCRTµÄÒ»¸öÕæ×Ó¼¯£¨ÉÙÁËC++±ê×¼Ëù²»°üº¬µÄ´úÂë£¬ÌØ±ðÊÇ´óÁ¿µÄµÍ²ãC´úÂ룩
ÖÁÓÚCRTÓëWINDOWS
APIµÄ¹ØÏµ£¬ÓëÐí¶àÈËÀí½âµÄÏà·´£¬WINDOWS
API×÷ΪWindowsµÄÒ»²¿·Ý£¬ÊÇÔÚCRTµÄ»ù´¡ÉÏ¿ª·¢µÄ¡£Äã¿ÉÒÔ½«Windows£¨¼°ÆäAPI£©¿´×÷Ò»¸öÏîÄ¿£¬¶øÕâ¸öÏîĿʹÓõÄÓïÑÔÊÇ»ã±à/C/C
++£¬Ê¹ÓõÄÀà¿â¾ÍÊÇCRT¡£ËùÒÔ£¬À뿪CRT£¬Windows APIÒ²ÎÞ·¨Ê¹Óõġ£
C++±ê×¼£¬ÊÇC++µÄͨÓÃÓïÑԹ淶£¬Ö¸µ¼ËùÓÐC
++ʹÓÃÕß¡£¶øCRTµÄÆäÖÐÒ»²¿·Ö¿ÉÒÔ¿´×÷ÊÇMicrosoft¿ª·¢µÄÒ»¸öC++±ê×¼¿âʵÏÖ£¨ÆäʵҲȷʵÈç´Ë£¬MicrosoftÔÚ¿ª·¢CRTʱ£¬²Î¿¼ÁË
ÕýÔÚ±ê×¼»¯¹ý³ÌÖеÄC++ÓïÑԹ淶£©¡£ËüÓëC++±ê×¼ÓÐÒ»¶¨µÄ²î¾à£¬²¿·ÖÔÒòÊÇ£¬ÔÚC++ûÓÐÍê³É±ê×¼»¯Ö®Ç°£¬CRTÒѾ¿ª·¢²¢Í¶ÈëʹÓÃÁË¡£ÎªÁËÏòϼæÈÝ
ÒÔǰµÄWindows´úÂ룬ÔçÆÚµÄCRTÓëC++±ê×¼×ÜÓÐÒ»¶¨µÄ²î¾à¡£µ«ÊÇCRTȷʵÔÚ²»¶ÏµÄ¸Ä½øÖС£VC6´øµÄCRTÓëC++±ê×¼»¹ÓбȽϴóµÄ²î¾à£¬¶ø
VC8µÄ¼¸ºõÍêÈ«·ûºÏC++±ê×¼ÁË¡£
×ÛÉÏ£¬CRT£¨Microsoft's C/C++ Runtime
Library£©µÄÒ»¸öÕæ×Ó¼¯£¨Ö÷ÒªÊÇC++ Runtime
Library£©ÊÇÒ»¸ö·ûºÏ£¨»òÖÁÉÙÊÇÆóͼ·ûºÏ£©C++±ê×¼µÄC++¿â¡£¶øWindows
API£¨ÒÔ¼°WindowsµÄÆäËûÐí¶à²¿·Ö£©¶¼ÊÇÔÚCRTµÄ»ù´¡ÉÏ¿ª·¢µÄ¡£
³ýÁËÒÔÉϽéÉܵģ¬ÔÚʹÓÃCRTµÄ¹ý³ÌÖУ¬»¹ÐèÒªÁ˽âµÄÊÇ£º
1¡¢CRTµÄһЩ×é³É²¿·ÖÒ²µ÷ÓÃÁËWindows API¡£Õâ¿ÉÄܾÍÊÇÓÐÈËÈÏΪCRTÊǽ¨Á¢µÄWindows
API»ù´¡ÉϵÄÔÒò¡£µ«ÊÇʵ¼ÊÉÏ£¬ÕâÒ»²¿·Ö°
Ïà¹ØÎĵµ£º
CºêʵÀý
Õª×ÔLinuxÄÚºË2.6.21.5Ô´Âë(²¿·Ö)£¬Õ¹Ê¾ÁËÁ´±íµÄÁíÒ»ÖÖʵÏÖ˼·
δ²ÉÓÃANSI C±ê×¼£¬²ÉÓÃGNU C±ê×¼£¬×ñ´ÓGPL°æÈ¨Ðí¿É¡£
struct list_head {
struct list_head *next, *prev;
};
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_ ......
ÓдÎÒ»¸öͬÊÂÎÊÎÒ
swc ^= swc;
ÊÇʲôÒâ˼,ÎÒÒ²²»ÖªµÀ,²éÁËÏÂ,Òâ˼Ӧ¸ÃÊǽ«swc±äÁ¿Çå0£¬ÒÉ»óµÄÊÇΪʲô¾Í²»ÄÜд³É swc = 0; ÄØ?²»Ã÷°×
˳±ã¼Ç¼ÏÂÆäËûµÄ²Ù×÷,Åöµ½ÐµÄÔÙ×·¼Ó:
swc = ~swc; //±äÁ¿È¡·´ ......
̸̸CÓïÑÔµÄmalloc()ºÍfree()
Ò»¡¢malloc()ºÍfree()µÄ»ù±¾¸ÅÄîÒÔ¼°»ù±¾Ó÷¨£º
1¡¢º¯ÊýÔÐͼ°ËµÃ÷£º
void *malloc(long NumBytes)£º¸Ãº¯Êý·ÖÅäÁËNumBytes¸ö×Ö½Ú£¬²¢·µ»ØÁËÖ¸ÏòÕâ¿éÄÚ´æµÄÖ¸Õë¡£Èç¹û·ÖÅäʧ°Ü£¬Ôò·µ»ØÒ»¸ö¿ÕÖ¸Õ루NULL£©¡£
¹ØÓÚ·ÖÅäʧ°ÜµÄÔÒò£¬Ó¦¸ÃÓжàÖÖ£¬±ÈÈç˵¿Õ¼ä²»×ã¾ÍÊÇÒ»ÖÖ¡£
void free(void *Fir ......
char *strcpy(char *strDes, const char *strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while ((*strDes + ......
c/c++ÃæÊÔÌâ
¡¡¡¡±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½ÁËÔ ......