extern "C" ÔĶÁ±Ê¼Ç zz
·¢ÐÅÈË: RoachCock (·´¶¯Ñ§ÊõȨÍþ), ÐÅÇø: CPlusPlus
±ê Ìâ: extern "C" ÔĶÁ±Ê¼Ç
·¢ÐÅÕ¾: ˮľÉçÇø (Fri Mar 7 00:22:47 2008), Õ¾ÄÚ
±¾ÒÔΪºÜ¼òµ¥£¬×ÐϸÔĶÁÁËһϠC++ ±ê×¼£¬·¢ÏÖÄÚÈÝ»¹²»ÉÙ¡£×ܽáÁËһϡ£
Òªµã£º
º¯ÊýÀàÐÍ£¬º¯ÊýÃû£¬±äÁ¿Ãû¾ßÓÐÓïÑÔÁ´½ÓÐÔ£¬language linkage¡£
ÓïÑÔÁ´½ÓÐÔ¿ÉÄÜ»áÓ°Ïìµ½Ãû×ÖÒÔ¼°µ÷ÓÃÔ¼¶¨µÈ£¬ÓÉʵÏÖ¾ö¶¨¡£
C++ ĬÈϵÄÓïÑÔÁ¬½ÓÐÔÊÇ C++ ÓïÑÔÁ´½ÓÐÔ¡£
ÓïÑÔÁ´½ÓÐÔ½ö×÷ÓÃÓÚº¯ÊýÀàÐÍ£¬º¯ÊýÃû£¬±äÁ¿Ãû¡£
²»Í¬ÓïÑÔÁ´½ÓÐԵĺ¯ÊýÀàÐÍÊDz»Í¬µÄÀàÐÍ£¬¼´±ãÆäÓàµÄµØ·½¶¼Ïàͬ¡£
ÓïÑÔÁ´½ÓÐÔÓÃÁ´½ÓÐÔ¹æ¸ñ£¨linkage-specification£©À´ÉùÃ÷£¬·ÖÓÐÎÞ´óÀ¨ºÅÁ½ÖÖÐÎʽ¡£
extern string-literal { declaration-seq opt }
extern string-literal declaration;
ËùÓеÄʵÏÖ¶¼±ØÐëÖ§³Ö "C" ºÍ "C++" Á´½ÓÐÔ¡£
Á´½ÓÐÔ¹æ¸ñÔÊÐíǶÌ×£¬´Ëʱ×îÄÚ²ãµÄÄǸöÆð×÷Ó㬵«ÊDz¢²»½¨Á¢×÷ÓÃÓò¡£
extern "C" { extern "C++" { class A{}; } }
extern "C" { class B:A{};}
ÒòΪ²»ÊÇ×÷ÓÃÓò£¬B ¿ÉÒÔ¿´µ½ A
Èç¹ûCÁ´½ÓÐÔÊ©¼Óµ½C++Àà³ÉÔ±ºÍ³ÉÔ±º¯ÊýµÄÀàÐÍ£¬ºöÂÔCÁ´½ÓÐÔ£¬µ«ÊÇÆäÓàµÄµØ·½ÒÀÈ»ÓÐЧ£¬±ÈÈç³ÉÔ±º¯ÊýµÄ²ÎÊý¡£
±ÈÈ磺
extern "C" { class A{ void f(void (*p)()){} }; }
A ²»ÊǺ¯ÊýºÍ±äÁ¿£¬Ã»ÓÐÓïÑÔÁ´½ÓÐÔ
f ÊÇ C++ ³ÉÔ±º¯Êý£¬ºöÂÔËùÖ¸¶¨µÄ C Á´½ÓÐÔ£¬Èç¹ûÔÚÍâ²ãûָ¶¨±ðµÄ£¬¾ÍÊÇ
C++Á´½ÓÐÔ¡£
p ¾ßÓÐ C Á´½ÓÐÔ¡£
³ýÁËC++Á´½ÓÐԵĺ¯ÊýÍ⣬ͬһ¸öº¯Êý²»´øÁ´½ÓÐÔ¹æ¸ñµÄÉùÃ÷µÄº¯Êý²»ÄÜÔçÓÚ´øµÄ¡£
Èç¹ûÇ°ÃæÉùÃ÷ÁË´øÁ´½ÓÐÔ¹æ¸ñµÄÐÎʽ£¬ºóÃæÓÖ³öÏÖÁ˲»´øµÄÐÎʽ£¬²»ÊÜÓ°Ïì¡£
±ÈÈç extern "C" void foo(); void foo(); ÊÇ¿ÉÒԵģ¬·´¹ýÀ´²»ÐС£
µ«ÊÇ extern void foo(); extern "C++" void foo(); ¿ÉÒÔ¡£
Ìض¨Ãû×ÖµÄ C ÓïÑÔÁ´½ÓÐԵĺ¯Êý×î¶àÖ»ÄÜÓÐÒ»¸ö£¬¼´±ã·ÅÔÚ²»Í¬µÄ namespace À
Ò²ÊÇͬһ¸
Ïà¹ØÎĵµ£º
¹ØÓÚ C/C++ º¯Êýµ÷ÓÃÔ¼¶¨£¬´ó¶àÊýʱºò²¢²»»áÓ°Ïì³ÌÐòÂß¼£¬µ«Óöµ½¿çÓïÑÔ±à³Ìʱ£¬Á˽âһϻ¹ÊÇÓкô¦µÄ¡£
VC ÖÐĬÈϵ÷ÓÃÊÇ __cdecl ·½Ê½£¬Windows API ʹÓà __stdcall µ÷Ó÷½Ê½£¬ÔÚ DLL µ¼³öº¯ÊýÖУ¬ÎªÁ˸ú Windows API ±£³ÖÒ»Ö£¬½¨ÒéʹÓà __stdcall ·½Ê½¡£
µ÷ÓÃÔ¼¶¨¸ú¶ÑÕ»Çå³ýÃÜÇÐÏà¹Ø¡£Èç¹ûдһ¸ö»ã±àº¯Êý£¬¸ø C/C++ ......
ѧ¶«Î÷£¬ÍùÍùʵÀý²ÅÊÇ×îÈÃÈ˸ÐÐËȤµÄ£¬ÀÏÊÇѧ»ù´¡ÀíÂÛ£¬²»¶¯ÊÖ£¬¸Ð¾õûÓгɾ͸У¬ºÇºÇ¡£
ÏÂÃæÏÈÀ´Ò»¸öʵÀý¡£ÎÒÃÇͨ¹ý´´½¨Á½¸öÏß³ÌÀ´ÊµÏÖ¶ÔÒ»¸öÊýµÄµÝ¼Ó¡£
»òÐíÕâ¸öʵÀýûÓÐʵ¼ÊÔËÓõļÛÖµ£¬µ«ÊÇÉÔ΢¸Ä¶¯Ò»Ï£¬ÎÒÃǾͿÉÒÔÓõ½ÆäËûµØ·½È¥À¡£
ÏÂÃæÊÇÎÒÃǵĴúÂ룺
/*thread_example.c : c multiple thread programmi ......
±í´ïʽµÄ¸±×÷ÓÃ
ÔËËã·ûµÄÓÅÏȼ¶Óë½áºÏÐԹ涨Á˱í´ïʽÖÐÏàÁÚÁ½¸öÔËËã·ûµÄÔËËã´ÎÐò£¬µ«¶ÔÓÚË«Ä¿
ÔËËãµÄ²Ù×÷Êý£¬C++ûÓй涨ËûÃǵļÆËã´ÎÐò¡£ÀýÈ磬¶ÔÓÚ±í´ïʽ£º
exp1 + exp2;
ÏȼÆËã exp1 »¹ÊÇ exp2£¿²»Í¬µÄ±àÒëÆ÷Óв»Í¬µÄ×ö·¨¡£
ÔÚÊýѧÉÏ£¬¶ÔÓÚË«Ä¿ÔËËã·û£¬²»ÂÛÏȼÆËãÄÄÒ»¸ö²Ù×÷Êý£¬ÒªÇó×îÖÕ¼ÆËã½á¹ûÒ»Ñù¡£
ÔÚ C++ ......
±¾ÎĹؼü´Ê£º c++ º¬Òå
1.ÒýÑÔ
C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌص㣨±»ÊÀÈ˳ÆΪ“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ ......