Ò»¡¢ADO¼ò½é
¡¡¡¡ADO(ActiveX Data Object)ÊÇMicrosoftÊý¾Ý¿âÓ¦ÓóÌÐò¿ª·¢µÄнӿڣ¬Êǽ¨Á¢ÔÚOLE DBÖ®Éϵĸ߲ãÊý¾Ý¿â·ÃÎʼ¼Êõ,²»½ö¼òµ¥Ò×Ó㬲¢ÇÒ²»Ê§Áé»îÐÔ.²»Ê§ÎªC++ÀûÓÃÊý¾Ý¿â¿ìËÙ¿ª·¢µÄ²»´íÑ¡Ôñ¡£
¡¡¡¡ÀíÂ۾Ͳ»ÓÃÎÒÔÚÕâ¶ù·Ñ»°ÁË,ÍøÉÏÓкܶà,µ«¹âÊÇÀíÂÛ,Ò²²»ÊDz»¹»µÄ,ADO·ÃÎÊÊý¾ÝµÄ·½·¨ºÜÁé»î,ÈÝÒ×ÈÃÈË»ìÏý.ÍøÉϴ󲿷ֵÄʵÀý¶¼ÊÇ»ùÓÚMFCµÄ,Êý¾Ý¿âÒ²ÊÇACCESS¶à,Õâ¶ùÎÒдÁËÒ»¸öC++ÓïÑÔ·ÃÎÊMS SQL2000µÄʵÀý£¬Ï£Íû¶Ô±ÈÎÒ»¹²ËÄñµÄ²ËÄñÓÐËù°ïÖú¡£
¡¡¡¡¶þ¡¢½¨¿â
¡¡¡¡Ê×ÏÈÔÚSQL2000ÆóÒµ¹ÜÀíÖУ¬½¨Á¢Ò»¸öÊý¾Ý¿âstudent,²¢´´½¨Ò»¸ö±ístu_info×ֶκÍÖµÈçÏ£º
snum sname sage ssex smajor
200113801 ±¾ÀµÇ 23 ÄÐ ¼ÆËã»ú¿ÆÑ§
200104205 ÕÅÇÉÇÉ 25 Å® ÂÃÓιÜÀí
200113802 ÕÅѧÓÑ 26 ÄÐ ¼ÆËã»ú¿ÆÑ§
¡¡¡¡Èý¡¢·ÃÎÊ
¡¡¡¡³ÌÐòÇåµ¥ÈçÏ£º£¨win2000+VC6.0)
/*******************************************************************
ÀûÓÃADO·ÃÎÊMS SQL2000
ÒªÇó: ¡¾1¡¿Êä³östu_info±íÄÚµÄÿһÌõ¼Ç¼
¡¾2¡¿Ìí¼ÓÒ»ÌõмǼ
¡¾3¡¿É¾³ýÃû×ÖΪ"±¾ÀµÇ"µÄ¼Ç¼ ......
Ò»¡¢ADO¼ò½é
¡¡¡¡ADO(ActiveX Data Object)ÊÇMicrosoftÊý¾Ý¿âÓ¦ÓóÌÐò¿ª·¢µÄнӿڣ¬Êǽ¨Á¢ÔÚOLE DBÖ®Éϵĸ߲ãÊý¾Ý¿â·ÃÎʼ¼Êõ,²»½ö¼òµ¥Ò×Ó㬲¢ÇÒ²»Ê§Áé»îÐÔ.²»Ê§ÎªC++ÀûÓÃÊý¾Ý¿â¿ìËÙ¿ª·¢µÄ²»´íÑ¡Ôñ¡£
¡¡¡¡ÀíÂ۾Ͳ»ÓÃÎÒÔÚÕâ¶ù·Ñ»°ÁË,ÍøÉÏÓкܶà,µ«¹âÊÇÀíÂÛ,Ò²²»ÊDz»¹»µÄ,ADO·ÃÎÊÊý¾ÝµÄ·½·¨ºÜÁé»î,ÈÝÒ×ÈÃÈË»ìÏý.ÍøÉϴ󲿷ֵÄʵÀý¶¼ÊÇ»ùÓÚMFCµÄ,Êý¾Ý¿âÒ²ÊÇACCESS¶à,Õâ¶ùÎÒдÁËÒ»¸öC++ÓïÑÔ·ÃÎÊMS SQL2000µÄʵÀý£¬Ï£Íû¶Ô±ÈÎÒ»¹²ËÄñµÄ²ËÄñÓÐËù°ïÖú¡£
¡¡¡¡¶þ¡¢½¨¿â
¡¡¡¡Ê×ÏÈÔÚSQL2000ÆóÒµ¹ÜÀíÖУ¬½¨Á¢Ò»¸öÊý¾Ý¿âstudent,²¢´´½¨Ò»¸ö±ístu_info×ֶκÍÖµÈçÏ£º
snum sname sage ssex smajor
200113801 ±¾ÀµÇ 23 ÄÐ ¼ÆËã»ú¿ÆÑ§
200104205 ÕÅÇÉÇÉ 25 Å® ÂÃÓιÜÀí
200113802 ÕÅѧÓÑ 26 ÄÐ ¼ÆËã»ú¿ÆÑ§
¡¡¡¡Èý¡¢·ÃÎÊ
¡¡¡¡³ÌÐòÇåµ¥ÈçÏ£º£¨win2000+VC6.0)
/*******************************************************************
ÀûÓÃADO·ÃÎÊMS SQL2000
ÒªÇó: ¡¾1¡¿Êä³östu_info±íÄÚµÄÿһÌõ¼Ç¼
¡¾2¡¿Ìí¼ÓÒ»ÌõмǼ
¡¾3¡¿É¾³ýÃû×ÖΪ"±¾ÀµÇ"µÄ¼Ç¼ ......
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê׼ʱ¼ä£¬Ò²¾ÍÊÇ´ó¼ÒËùÊìÖªµÄ¸ñÁÖÍþÖαê׼ʱ¼ä£¨Greenwich Mean Time£¬GMT£©¡£±ÈÈ磬ÖйúÄڵصÄʱ¼äÓëUTCµÄʱ²îΪ+8£¬Ò²¾ÍÊÇUTC+8¡£ÃÀ¹úÊÇUTC-5¡£
Calendar Time£ºÈÕÀúʱ¼ä£¬ÊÇÓÓ´ÓÒ»¸ö±ê׼ʱ¼äµãµ½´ËʱµÄʱ¼ä¾¹ýµÄÃëÊý&rdqu ......
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê׼ʱ¼ä£¬Ò²¾ÍÊÇ´ó¼ÒËùÊìÖªµÄ¸ñÁÖÍþÖαê׼ʱ¼ä£¨Greenwich Mean Time£¬GMT£©¡£±ÈÈ磬ÖйúÄڵصÄʱ¼äÓëUTCµÄʱ²îΪ+8£¬Ò²¾ÍÊÇUTC+8¡£ÃÀ¹úÊÇUTC-5¡£
Calendar Time£ºÈÕÀúʱ¼ä£¬ÊÇÓÓ´ÓÒ»¸ö±ê׼ʱ¼äµãµ½´ËʱµÄʱ¼ä¾¹ýµÄÃëÊý&rdqu ......
×ªÔØÓÚÕâÀhttp://www.programfan.com/article/showarticle.asp?id=2798
²»Ì«¶®ÈçºÎ¶ÔÔËÓÃc++µÄʱ¼äº¯ÊýµÄÅóÓѶ࿴¿´°É¡£
*************************ÆÓËØµÄ·Ö¸îÏß**********************************
׫ÎÄ/ÖÜÏè
ͻ񻣼
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½
¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal
Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê×¼Ê ......
×ªÔØÓÚÕâÀhttp://www.programfan.com/article/showarticle.asp?id=2798
²»Ì«¶®ÈçºÎ¶ÔÔËÓÃc++µÄʱ¼äº¯ÊýµÄÅóÓѶ࿴¿´°É¡£
*************************ÆÓËØµÄ·Ö¸îÏß**********************************
׫ÎÄ/ÖÜÏè
ͻ񻣼
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½
¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal
Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê×¼Ê ......
¿´µ½Õâ¸öÃæÊÔÌâ,¹À¼ÆºÜ¶à¸ÕѧCÖ¸ÕëµÄͬѧ¶¼»á¸ã´í.
void GetMemory(char *p)
{
// ´«µÝ½øÀ´µÄµÄֵʹµÃ*p==NULL
// ÕâÀïÐ޸ĵÄÊÇÕâ¸öº¯ÊýÄÚµÄÁÙʱָÕë±äÁ¿pµÄÖµ
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
// ´«µÝ½øÈ¥µÄÊÇstrµÄÖµNULL
GetMemory(str);
// ÕâÀïstrÖ¸Õ벢δ¸³Öµ,ÈÔÈ»ÊÇNULL,ËùÒÔÕâÀ︳ֵ»á³ö´í
strcpy(str, "Hello World");
printf("%s\n", str);
free(str);
}
ÎÒÃÇÖªµÀ¼ÆËã»úÖ»ÈÏʶ0ºÍ1,ËùÓеÄÊý¾Ý,°üÀ¨Í¼Æ¬,ÎÄ×ÖµÈ×îÖÕ¶¼ÊÇת»»³É0ºÍ1À´±íʾ.
ΪÁË·½±ã˵Ã÷,ÎÒÃÇÓÃÊ®Áù¸ö¶þ½øÖÆÊý×é³ÉµÄÒ»¸öÊ®Áù½øÖÆÊýÀ´±íʾ.
ÔÚwin32ϵͳÖÐ,ÄÚ´æµØÖ·ÊÇ´Ó0µ½2^32bit(Ï൱ÓÚ0µ½4GB),win32ÖÐVC6.0ÖÐÖ¸Õë±¾ÖʾÍÊÇÒ»¸öÕ¼4¸ö×Ö½ÚµÄÎÞ·ûºÅÕûÐÎ(unsigned int),ÄÜÈ¡0µ½2^32ÖÐËùÓеÄÖµµÄÈÎÒ»¸öÖµ,¼´Ö¸ÕëÄÜÏò¼ÆËã»úÄÚ´æÖÐÈκÎÒ»¸öµØÖ·.
// pCharÖ¸ÏòµÄÒ»¸öcharÐͱäÁ¿(×¢Òâ×Ö·ûºÍ×Ö·û´®¸ÅÄîÇø·Ö¿ª)
char *pChar = NULL;
// pIntÖ¸ÏòµÄÊÇÒ»¸öintÐͱäÁ¿
int *pInt = NULL;
// pDoubleÖ¸ÏòµÄÊÇÒ»¸öpDoubleÐͱäÁ¿
double *pDouble = NULL;
struct node
{
int i, j, k;
};
// pNodeÖ¸ÏòµÄÊÇ ......
¿´µ½Õâ¸öÃæÊÔÌâ,¹À¼ÆºÜ¶à¸ÕѧCÖ¸ÕëµÄͬѧ¶¼»á¸ã´í.
void GetMemory(char *p)
{
// ´«µÝ½øÀ´µÄµÄֵʹµÃ*p==NULL
// ÕâÀïÐ޸ĵÄÊÇÕâ¸öº¯ÊýÄÚµÄÁÙʱָÕë±äÁ¿pµÄÖµ
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
// ´«µÝ½øÈ¥µÄÊÇstrµÄÖµNULL
GetMemory(str);
// ÕâÀïstrÖ¸Õ벢δ¸³Öµ,ÈÔÈ»ÊÇNULL,ËùÒÔÕâÀ︳ֵ»á³ö´í
strcpy(str, "Hello World");
printf("%s\n", str);
free(str);
}
ÎÒÃÇÖªµÀ¼ÆËã»úÖ»ÈÏʶ0ºÍ1,ËùÓеÄÊý¾Ý,°üÀ¨Í¼Æ¬,ÎÄ×ÖµÈ×îÖÕ¶¼ÊÇת»»³É0ºÍ1À´±íʾ.
ΪÁË·½±ã˵Ã÷,ÎÒÃÇÓÃÊ®Áù¸ö¶þ½øÖÆÊý×é³ÉµÄÒ»¸öÊ®Áù½øÖÆÊýÀ´±íʾ.
ÔÚwin32ϵͳÖÐ,ÄÚ´æµØÖ·ÊÇ´Ó0µ½2^32bit(Ï൱ÓÚ0µ½4GB),win32ÖÐVC6.0ÖÐÖ¸Õë±¾ÖʾÍÊÇÒ»¸öÕ¼4¸ö×Ö½ÚµÄÎÞ·ûºÅÕûÐÎ(unsigned int),ÄÜÈ¡0µ½2^32ÖÐËùÓеÄÖµµÄÈÎÒ»¸öÖµ,¼´Ö¸ÕëÄÜÏò¼ÆËã»úÄÚ´æÖÐÈκÎÒ»¸öµØÖ·.
// pCharÖ¸ÏòµÄÒ»¸öcharÐͱäÁ¿(×¢Òâ×Ö·ûºÍ×Ö·û´®¸ÅÄîÇø·Ö¿ª)
char *pChar = NULL;
// pIntÖ¸ÏòµÄÊÇÒ»¸öintÐͱäÁ¿
int *pInt = NULL;
// pDoubleÖ¸ÏòµÄÊÇÒ»¸öpDoubleÐͱäÁ¿
double *pDouble = NULL;
struct node
{
int i, j, k;
};
// pNodeÖ¸ÏòµÄÊÇ ......
µ÷Óú¯Êýʱ£¬¼ÆËã»ú³£ÓÃÕ»À´´æ´¢´«µÝ¸øº¯ÊýµÄ²ÎÊý¡£
Õ»ÊÇÒ»ÖÖÏȽøºó³öµÄÊý¾Ý½á¹¹£¬Õ»ÓÐÒ»¸ö´æ´¢Çø¡¢Ò»¸öÕ»¶¥Ö¸Õë¡£Õ»¶¥Ö¸ÕëÖ¸Ïò¶ÑÕ»ÖеÚÒ»¸ö¿ÉÓõÄÊý¾ÝÏ±»³ÆÎªÕ»¶¥£©¡£Óû§¿ÉÒÔÔÚÕ»¶¥ÉÏ·½ÏòÕ»ÖмÓÈëÊý¾Ý£¬Õâ¸ö²Ù×÷±»³ÆÎªÑ¹Õ»(Push)£¬Ñ¹Õ»ÒÔºó£¬Õ»¶¥×Ô¶¯±ä³ÉмÓÈëÊý¾ÝÏîµÄλÖã¬Õ»¶¥Ö¸ÕëÒ²ËæÖ®Ð޸ġ£Óû§Ò²¿ÉÒÔ´Ó¶ÑÕ»ÖÐÈ¡×ßÕ»¶¥£¬³ÆÎªµ¯³öÕ»(pop)£¬µ¯³öÕ»ºó£¬Õ»¶¥ÏµÄÒ»¸öÔªËØ±ä³ÉÕ»¶¥£¬Õ»¶¥Ö¸ÕëËæÖ®Ð޸ġ£º¯Êýµ÷ÓÃʱ£¬µ÷ÓÃÕßÒÀ´Î°Ñ²ÎÊýѹջ£¬È»ºóµ÷Óú¯Êý£¬º¯Êý±»µ÷ÓÃÒÔºó£¬ÔÚ¶ÑÕ»ÖÐÈ¡µÃÊý¾Ý£¬²¢½øÐмÆËã¡£º¯Êý¼ÆËã½áÊøÒԺ󣬻òÕßµ÷ÓÃÕß¡¢»òÕߺ¯Êý±¾ÉíÐ޸ĶÑÕ»£¬Ê¹¶ÑÕ»»Ö¸´Ô×°¡£
ÔÚ²ÎÊý´«µÝÖУ¬ÓÐÁ½¸öÖØÒªµÄÎÊÌâ±ØÐëÒªÃ÷ȷ˵Ã÷£º
1. µ±²ÎÊý¸öÊý¶àÓÚÒ»¸öʱ£¬°´ÕÕʲô˳Ðò°Ñ²ÎÊýѹÈë¶ÑÕ»£»
2. º¯Êýµ÷Óúó£¬ÓÉËÀ´°Ñ¶ÑÕ»»Ö¸´Ô×´¡£
Ôڸ߼¶ÓïÑÔÖУ¬¾ÍÊÇͨ¹ýº¯ÊýµÄµ÷Ó÷½Ê½À´ËµÃ÷ÕâÁ½¸öÎÊÌâµÄ¡£³£¼ûµÄµ÷Ó÷½Ê½ÓУº
stdcall
cdecl
fastcall
thiscall
thiscall
naked call
ÏÂÃæ¾Í·Ö±ð½éÉÜÕ⼸ÖÖµ÷Ó÷½Ê½£º
1. stdcall
stdcallµ÷Ó÷½Ê½ÓÖ±»³ÆÎªPascalµ÷Ó÷½Ê½¡£ÔÚMicrosoft C++ϵÁеÄC/C++±àÒëÆ÷ÖУ¬Ê¹ÓÃPASCALºê£¬WINAPIºêºÍCALLBACKºêÀ´Ö¸¶¨º¯ÊýµÄµ÷Ó÷½Ê½Îªstdc ......
µ÷Óú¯Êýʱ£¬¼ÆËã»ú³£ÓÃÕ»À´´æ´¢´«µÝ¸øº¯ÊýµÄ²ÎÊý¡£
Õ»ÊÇÒ»ÖÖÏȽøºó³öµÄÊý¾Ý½á¹¹£¬Õ»ÓÐÒ»¸ö´æ´¢Çø¡¢Ò»¸öÕ»¶¥Ö¸Õë¡£Õ»¶¥Ö¸ÕëÖ¸Ïò¶ÑÕ»ÖеÚÒ»¸ö¿ÉÓõÄÊý¾ÝÏ±»³ÆÎªÕ»¶¥£©¡£Óû§¿ÉÒÔÔÚÕ»¶¥ÉÏ·½ÏòÕ»ÖмÓÈëÊý¾Ý£¬Õâ¸ö²Ù×÷±»³ÆÎªÑ¹Õ»(Push)£¬Ñ¹Õ»ÒÔºó£¬Õ»¶¥×Ô¶¯±ä³ÉмÓÈëÊý¾ÝÏîµÄλÖã¬Õ»¶¥Ö¸ÕëÒ²ËæÖ®Ð޸ġ£Óû§Ò²¿ÉÒÔ´Ó¶ÑÕ»ÖÐÈ¡×ßÕ»¶¥£¬³ÆÎªµ¯³öÕ»(pop)£¬µ¯³öÕ»ºó£¬Õ»¶¥ÏµÄÒ»¸öÔªËØ±ä³ÉÕ»¶¥£¬Õ»¶¥Ö¸ÕëËæÖ®Ð޸ġ£º¯Êýµ÷ÓÃʱ£¬µ÷ÓÃÕßÒÀ´Î°Ñ²ÎÊýѹջ£¬È»ºóµ÷Óú¯Êý£¬º¯Êý±»µ÷ÓÃÒÔºó£¬ÔÚ¶ÑÕ»ÖÐÈ¡µÃÊý¾Ý£¬²¢½øÐмÆËã¡£º¯Êý¼ÆËã½áÊøÒԺ󣬻òÕßµ÷ÓÃÕß¡¢»òÕߺ¯Êý±¾ÉíÐ޸ĶÑÕ»£¬Ê¹¶ÑÕ»»Ö¸´Ô×°¡£
ÔÚ²ÎÊý´«µÝÖУ¬ÓÐÁ½¸öÖØÒªµÄÎÊÌâ±ØÐëÒªÃ÷ȷ˵Ã÷£º
1. µ±²ÎÊý¸öÊý¶àÓÚÒ»¸öʱ£¬°´ÕÕʲô˳Ðò°Ñ²ÎÊýѹÈë¶ÑÕ»£»
2. º¯Êýµ÷Óúó£¬ÓÉËÀ´°Ñ¶ÑÕ»»Ö¸´Ô×´¡£
Ôڸ߼¶ÓïÑÔÖУ¬¾ÍÊÇͨ¹ýº¯ÊýµÄµ÷Ó÷½Ê½À´ËµÃ÷ÕâÁ½¸öÎÊÌâµÄ¡£³£¼ûµÄµ÷Ó÷½Ê½ÓУº
stdcall
cdecl
fastcall
thiscall
thiscall
naked call
ÏÂÃæ¾Í·Ö±ð½éÉÜÕ⼸ÖÖµ÷Ó÷½Ê½£º
1. stdcall
stdcallµ÷Ó÷½Ê½ÓÖ±»³ÆÎªPascalµ÷Ó÷½Ê½¡£ÔÚMicrosoft C++ϵÁеÄC/C++±àÒëÆ÷ÖУ¬Ê¹ÓÃPASCALºê£¬WINAPIºêºÍCALLBACKºêÀ´Ö¸¶¨º¯ÊýµÄµ÷Ó÷½Ê½Îªstdc ......
ÓÉÓÚC++±àÒëÆ÷ÐèÒªÖ§³Öº¯ÊýµÄÖØÔØ£¬»á¸Ä±äº¯ÊýµÄÃû³Æ£¬Óë±ê×¼CÖк¯ÊýÃû³Æ²»Í¬¡£È»¶ødllµÄµ¼³öº¯Êýͨ³£ÊDZê×¼C¶¨ÒåµÄ£¬Èñê×¼C±àдµÄdllº¯Êý¶¨ÒåÔÚCºÍC++±àÒëÆ÷϶¼ÄܱàÒëͨ¹ý£¬Í¨³£»áʹÓÃÒÔϵĸñʽ£º£¨Õâ¸ö¸ñʽÔںܶà³ÉÊìµÄ´úÂëÖкܳ£¼û£©
#ifdef __cplusplus extern "C"
{
#endif
// ÔÚÕâÀïд±ê×¼C³ÌÐò£¬ÀýÈçdllµ¼³öº¯ÊýµÄ¶¨Òå
#ifdef __cplusplus
};
#endif
ÏÂÃæ½âÊÍÒ»ÏÂÉÏÃæµÄ´úÂ룺
Ê×ÏÈ__cplusplusÊÇC++±àÒëÆ÷ÄÚ²¿¶¨ÒåµÄºê£¬Èç¹ûʹÓõÄC±àÒëÆ÷£¬__cplusplusºê²»»á±»¶¨Òå¡£Ëü¿ÉÒÔ×÷ÎªÇø·ÖʹÓõÄÊÇC±àÒëÆ÷»¹ÊÇC++±àÒëÆ÷µÄ±êÖ¾¡£ÔÚ±ê×¼CÖÐC´úÂëÖ±½Óд¾Í¿ÉÒÔÁË¡£¶øÔÚC++ÖУ¬ÐèÒª¼Óextern "C"»ò°üº¬ÔÚextern "C"¿éÖС£ÓÉÓÚ±ê×¼CÊDz»Ö§³Öextern "C"µÄ£¬»á²úÉú±äÒì´íÎó£¬ËùÒÔʹÓÃÔ¤±àÒëÖ¸Áîͨ¹ý__cplusplusÀ´ÅжÏÖ»ÓÐÔÚʹÓÃC++±àÒëÆ÷µÄʱºò²Å¶¨Òåextern "C"¡£
ÒÔÉÏÊÇÔÚÍøÉÏÕÒµ½µÄ½â¾öCºÍC++±àÒëÆ÷¶¼Äܵ÷ÓÃÓÉC±àÒë¶ø³ÉµÄ.dllµÄ·½Ê½¡£±§Ç¸ÕÒ²»µ½³ö´¦ÁË£¬Ï£ÍûÔ×÷ÕßÁ½⡣ ......
ÓÉÓÚC++±àÒëÆ÷ÐèÒªÖ§³Öº¯ÊýµÄÖØÔØ£¬»á¸Ä±äº¯ÊýµÄÃû³Æ£¬Óë±ê×¼CÖк¯ÊýÃû³Æ²»Í¬¡£È»¶ødllµÄµ¼³öº¯Êýͨ³£ÊDZê×¼C¶¨ÒåµÄ£¬Èñê×¼C±àдµÄdllº¯Êý¶¨ÒåÔÚCºÍC++±àÒëÆ÷϶¼ÄܱàÒëͨ¹ý£¬Í¨³£»áʹÓÃÒÔϵĸñʽ£º£¨Õâ¸ö¸ñʽÔںܶà³ÉÊìµÄ´úÂëÖкܳ£¼û£©
#ifdef __cplusplus extern "C"
{
#endif
// ÔÚÕâÀïд±ê×¼C³ÌÐò£¬ÀýÈçdllµ¼³öº¯ÊýµÄ¶¨Òå
#ifdef __cplusplus
};
#endif
ÏÂÃæ½âÊÍÒ»ÏÂÉÏÃæµÄ´úÂ룺
Ê×ÏÈ__cplusplusÊÇC++±àÒëÆ÷ÄÚ²¿¶¨ÒåµÄºê£¬Èç¹ûʹÓõÄC±àÒëÆ÷£¬__cplusplusºê²»»á±»¶¨Òå¡£Ëü¿ÉÒÔ×÷ÎªÇø·ÖʹÓõÄÊÇC±àÒëÆ÷»¹ÊÇC++±àÒëÆ÷µÄ±êÖ¾¡£ÔÚ±ê×¼CÖÐC´úÂëÖ±½Óд¾Í¿ÉÒÔÁË¡£¶øÔÚC++ÖУ¬ÐèÒª¼Óextern "C"»ò°üº¬ÔÚextern "C"¿éÖС£ÓÉÓÚ±ê×¼CÊDz»Ö§³Öextern "C"µÄ£¬»á²úÉú±äÒì´íÎó£¬ËùÒÔʹÓÃÔ¤±àÒëÖ¸Áîͨ¹ý__cplusplusÀ´ÅжÏÖ»ÓÐÔÚʹÓÃC++±àÒëÆ÷µÄʱºò²Å¶¨Òåextern "C"¡£
ÒÔÉÏÊÇÔÚÍøÉÏÕÒµ½µÄ½â¾öCºÍC++±àÒëÆ÷¶¼Äܵ÷ÓÃÓÉC±àÒë¶ø³ÉµÄ.dllµÄ·½Ê½¡£±§Ç¸ÕÒ²»µ½³ö´¦ÁË£¬Ï£ÍûÔ×÷ÕßÁ½⡣ ......