Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C/C++º¯Êýµ÷ÓÃÔ¼¶¨


¹ØÓÚ C/C++ º¯Êýµ÷ÓÃÔ¼¶¨£¬´ó¶àÊýʱºò²¢²»»áÓ°Ïì³ÌÐòÂß¼­£¬µ«Óöµ½¿çÓïÑÔ±à³Ìʱ£¬Á˽âһϻ¹ÊÇÓкô¦µÄ¡£
VC ÖÐĬÈϵ÷ÓÃÊÇ __cdecl ·½Ê½£¬Windows API ʹÓà __stdcall µ÷Ó÷½Ê½£¬ÔÚ DLL µ¼³öº¯ÊýÖУ¬ÎªÁ˸ú Windows API ±£³ÖÒ»Ö£¬½¨ÒéʹÓà __stdcall ·½Ê½¡£
µ÷ÓÃÔ¼¶¨¸ú¶ÑÕ»Çå³ýÃÜÇÐÏà¹Ø¡£Èç¹ûдһ¸ö»ã±àº¯Êý£¬¸ø C/C++ µ÷Óã¬ÔÚ __cdecl ·½Ê½Ï£¬Ôò»ã±àº¯ÊýÎÞÐèÇå³ý¶ÑÕ»£¬ÔÚ __stdcall ·½Ê½Ï£¬»ã±àº¯ÊýÐèÒªÔÚ·µ»Ø£¨RET£©Ö®Ç°»Ö¸´¶ÑÕ»¡£
C ÓïÑÔÓÐ __cdecl¡¢__stdcall¡¢__fastcall¡¢naked¡¢__pascal¡£
C++ ÓïÑÔÓÐ __cdecl¡¢__stdcall¡¢__fastcall¡¢naked¡¢__pascal¡¢__thiscall£¬±È C ÓïÑÔ¶à³öÒ»ÖÖ __thiscall µ÷Ó÷½Ê½¡£
    ÔÚVCÖУ¬¿ÉÒÔÉèÖÃĬÈϵĵ÷ÓÃÔ¼¶¨£¬ÉèÖ÷¾¶Îª£º
Project à Properties à Configuration Properties à C/C++ à Advanced à Call Conversion¡£
ÏÂÃæÏêϸ½éÉÜÈçÉÏÁùÖÖµ÷Ó÷½Ê½£º
1¡¢__cdecl
__cdeclµ÷ÓÃÔ¼¶¨ÓÖ³ÆΪ C µ÷ÓÃÔ¼¶¨£¬ÊÇ C/C++ ÓïÑÔȱʡµÄµ÷ÓÃÔ¼¶¨¡£²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý±¾Éí²»ÇåÀíÕ»£¬´Ë¹¤×÷Óɵ÷ÓÃÕ߸ºÔ𣬷µ»ØÖµÔÚEAXÖС£ÓÉÓÚÓɵ÷ÓÃÕßÇåÀíÕ»£¬ËùÒÔÔÊÐí¿É±ä²ÎÊýº¯Êý´æÔÚ£¬Èçint sprintf(char* buffer,const char* format,...);¡£
2¡¢__stdcall
__stdcall ºÜ¶àʱºò±»³ÆΪ pascal µ÷ÓÃÔ¼¶¨¡£pascal ÓïÑÔÊÇÔçÆںܳ£¼ûµÄÒ»ÖÖ½ÌѧÓüÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ÆäÓï·¨ÑϽ÷¡£²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚEAXÖС£
3¡¢__fastcall
¹ËÃû˼Ò壬__fastcall µÄÌصã¾ÍÊǿ죬ÒòΪËüͨ¹ý CPU ¼Ä´æÆ÷À´´«µÝ²ÎÊý¡£ËûÓà ECX ºÍ EDX ´«ËÍÇ°Á½¸öË«×Ö£¨DWORD£©»ò¸üСµÄ²ÎÊý£¬Ê£ÏµIJÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚ EAX ÖС£
4¡¢naked
naked ÊÇÒ»¸öºÜÉÙ¼ûµÄµ÷ÓÃÔ¼¶¨£¬Ò»°ã²»½¨ÒéʹÓᣱàÒëÆ÷²»»á¸øÕâÖÖº¯ÊýÔö¼Ó³õʼ»¯ºÍÇåÀí´úÂ룬¸üÌØÊâµÄÊÇ£¬Äã²»ÄÜÓÃreturn·µ»Ø·µ»ØÖµ£¬Ö»ÄÜÓòåÈë»ã±à·µ»Ø½á¹û£¬´Ëµ÷ÓÃÔ¼¶¨±ØÐë¸ú __declspec ͬʱʹÓá£ÀýÈ綨ÒåÒ»¸öÇóºÍ³ÌÐò£¬Èç__declspec(naked) int  add(int a,int b);¡£
5¡¢__pascal
ÕâÊÇ pascal ÓïÑԵĵ÷ÓÃÔ¼¶¨£¬¸ú __stdcall Ò»Ñù£¬²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚEAXÖС£VC ÖÐÒѾ­·ÏÆúÁËÕâÖÖµ÷Ó÷½Ê½£¬Òò´ËÔÚд VC ³ÌÐòʱ£¬½¨ÒéʹÓà __stdcall ´úÌæ¡£
6¡¢__thiscall
ÕâÊÇ C++ ÓïÑÔÌØÓеÄÒ»ÖÖµ÷Ó÷½Ê½£¬ÓÃÓÚÀà³ÉÔ±º¯ÊýµÄµ÷ÓÃÔ¼¶¨¡£Èç¹û


Ïà¹ØÎĵµ£º

[ASM/C/C++]cÓïÑÔÖÐstatic Ó÷¨×ܽá

¼ÙÉèÔÚtest.hÖж¨ÒåÁËÒ»¸östatic bool g_test=false;
Èôtest1.cºÍtest2.c¶¼°üº¬test.h£¬Ôòtest1.cºÍtest2.c·Ö±ðÉú³ÉÁ½·Ýg_test£¬ÔÚtest1.c ÖÐÖÃg_test=true,¶øtest2.cÖÐÈÔȻΪfalse²¢Î´¸Ä±ä£¡shit£¡£¡
Ò»¡¢c³ÌÐò´æ´¢¿Õ¼ä²¼¾Ö
C³ÌÐòÒ»Ö±ÓÉÏÂÁв¿·Ö×é³É£º
      1£©ÕýÎĶΗ—CPUÖ´ÐÐ ......

C/C++ÓïÑÔvoid¼°voidÖ¸ÕëÉî²ã̽Ë÷

1.¸ÅÊö
¡¡¡¡Ðí¶à³õѧÕ߶ÔC/C++ÓïÑÔÖеÄvoid¼°voidÖ¸ÕëÀàÐͲ»ÉõÀí½â£¬Òò´ËÔÚʹÓÃÉϳöÏÖÁËһЩ´íÎó¡£±¾ÎĽ«¶Ôvoid¹Ø¼ü×ÖµÄÉî¿Ìº¬Òå½øÐнâ˵£¬²¢ÏêÊövoid¼°voidÖ¸ÕëÀàÐ͵ÄʹÓ÷½·¨Óë¼¼ÇÉ¡£
2.voidµÄº¬Òå
¡¡¡¡voidµÄ×ÖÃæÒâ˼ÊÇ“ÎÞÀàÐÍ”£¬void *ÔòΪ“ÎÞÀàÐÍÖ¸Õ딣¬void *¿ÉÒÔÖ¸ÏòÈκÎÀàÐ͵ÄÊý¾Ý¡£
¡ ......

¡ï¡ï¡ï C/C++×ÊÁÏ´óÈ«£¬ÄÃÀ´·ÖÏí ¡ï¡ï¡ï

¡ï¡ï¡ï C/C++×ÊÁÏ´óÈ«£¬ÄÃÀ´·ÖÏí ¡ï¡ï¡ï
¹úÄÚ×îרҵ£¬Ò²ÊÇ×îרһµÄ C/C++·½Ïò×ÊÁÏÕ¾ ÎÒÃǵÄÌصãÊÇÿÌ춼ÔÚ²»¶Ï¸üÐÂ
C/C++Ô´ÂëÂÛ̳
www.cssdn.net ¡¾ C  S  S  D  n¡¿
È«¹ú×î´óµÄC/C++ÃæÊÔÌâ¿â£¬Íø¾ÛÁËÈ«Çò500Ç¿IT¹«Ë¾C/C++ÃæÊÔÌâ
http://www.c ......

extern¼°extern ¡°C¡±Ó÷¨

externÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©µÄ¹Ø¼ü×ÖËü¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹÓá£
1¡£¶ÔÓÚextern±äÁ¿À´Ëµ£¬½ö½öÊÇÒ»¸ö±äÁ¿µÄÉùÃ÷£¬Æä²¢²»ÊÇÔÚ¶¨Òå·ÖÅäÄÚ´æ¿Õ¼ä¡£Èç¹û¸Ã±äÁ¿¶¨Òå¶à´Î£¬»áÓÐÁ¬½Ó´íÎó
2¡£Í¨³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍÈ«¾Ö±äÁ ......

Ò»¸öLinuxÏÂCÏ̳߳صÄʵÏÖ

      ʲôʱºòÐèÒª´´½¨Ï̳߳ØÄØ£¿¼òµ¥µÄ˵£¬Èç¹ûÒ»¸öÓ¦ÓÃÐèҪƵ·±µÄ´´½¨ºÍÏú»ÙỊ̈߳¬¶øÈÎÎñÖ´ÐеÄʱ¼äÓַdz£¶Ì£¬ÕâÑùÏ̴߳´½¨ºÍÏú»ÙµÄ´øÀ´µÄ¿ªÏú¾Í²»ÈݺöÊÓ£¬ÕâʱҲÊÇÏ̳߳ظóö³¡µÄ»ú»áÁË¡£Èç¹ûÏ̴߳´½¨ºÍÏú»Ùʱ¼äÏà±ÈÈÎÎñÖ´ÐÐʱ¼ä¿ÉÒÔºöÂÔ²»¼Æ£¬ÔòûÓбØҪʹÓÃÏ̳߳ØÁË¡£
   ÏÂÃæÊÇ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ