CÖÐÈçºÎµ÷ÓÃC++£¿C++ÖÐÈçºÎµ÷ÓÃC
CÖÐÈçºÎµ÷ÓÃC++£¿C++ÖÐÈçºÎµ÷ÓÃC?Õâ¸öÎÊÌâÊÇÐí¶àÈí¼þ¹«Ë¾ÃæÊÔ¹ý³ÌÖлáÎʵ½µÄÒ»¸ö³£¼ûÎÊÌâ¡£»Ø´ðÕâ¸öÎÊÌâ²¢²»À§ÄÑ£¬ÄǾÍÊÇʹÓÃ
extern "C",µ«ÊÇÃæÊÔ¹Ù¿ÉÄÜÏëͨ¹ýÕâ¸öÎÊÌâÁ˽âÄã¶ÔC/C++ÕÆÎյij̶ȡ£ÏÂÃæ×Ðϸ·ÖÎö¸ÃÎÊÌâ¡£
Ê×ÏÈ£¬×÷
ΪexternÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©µÄ¹Ø¼ü×Ö£¬¸Ã¹Ø¼ü×Ö¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹ

ͨ³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍÈ«¾Ö±äÁ¿ÒԹؼü×ÖexternÉùÃ÷¡£ÀýÈ磬Èç¹ûÄ£¿éBÓûÒýÓøÃÄ£
¿éAÖж¨ÒåµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýʱֻÐè°üº¬Ä£¿éAµÄÍ·Îļþ¼´¿É¡£ÕâÑù£¬Ä£¿éBÖе÷ÓÃÄ£¿éAÖеĺ¯Êýʱ£¬ÔÚ±àÒë½×¶Î£¬Ä£¿éBËäÈ»ÕÒ²»µ½¸Ãº¯Êý£¬µ«ÊDz¢²»»á±¨´í£»
Ëü»áÔÚÁ¬½Ó½×¶ÎÖдÓÄ£¿éA±àÒëÉú³ÉµÄÄ¿±ê´úÂëÖÐÕÒµ½´Ëº¯Êý
extern "C"ÊÇÁ¬½ÓÉêÃ÷(linkage
declaration),±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊÇ°´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ,À´¿´¿´C++ÖжÔÀàËÆCµÄº¯ÊýÊÇÔõÑù±àÒëµÄ£º
×÷
ΪһÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬C++Ö§³Öº¯ÊýÖØÔØ£¬¶ø¹ý³ÌʽÓïÑÔCÔò²»Ö§³Ö¡£º¯Êý±»C++±àÒëºóÔÚ·ûºÅ¿âÖеÄÃû×ÖÓëCÓïÑԵIJ»Í¬¡£ÀýÈ磬¼ÙÉèij¸öº¯ÊýµÄÔÐÍΪ£º
void
foo( int x, int y );
¡¡¡¡
¸Ãº¯Êý±»C±àÒëÆ÷±àÒëºóÔÚ·ûºÅ¿âÖеÄÃû×ÖΪ_foo£¬¶øC++±àÒëÆ÷Ôò»á²úÉúÏñ
_foo_int_intÖ®ÀàµÄÃû×Ö£¨²»Í¬µÄ±àÒëÆ÷¿ÉÄÜÉú³ÉµÄÃû×Ö²»Í¬£¬µ«ÊǶ¼²ÉÓÃÁËÏàͬµÄ»úÖÆ£¬Éú³ÉµÄÐÂÃû×Ö³ÆΪ“mangled name”£©¡£
_foo_int_int
ÕâÑùµÄÃû×Ö°üº¬Á˺¯ÊýÃû¡¢º¯Êý²ÎÊýÊýÁ¿¼°ÀàÐÍÐÅÏ¢£¬C++¾ÍÊÇ¿¿ÕâÖÖ»úÖÆÀ´ÊµÏÖº¯ÊýÖØÔصġ£ÀýÈ磬ÔÚC++ÖУ¬º¯Êývoid foo( int x,
int y )Óëvoid foo( int x, float y )±àÒëÉú³ÉµÄ·ûºÅÊDz»ÏàͬµÄ£¬ºóÕßΪ_foo_int_float¡£
ͬ
ÑùµØ£¬C++ÖеıäÁ¿³ýÖ§³Ö¾Ö²¿±äÁ¿Í⣬»¹Ö§³ÖÀà³ÉÔ±±äÁ¿ºÍÈ«¾Ö±äÁ¿¡£Óû§Ëù±àд³ÌÐòµÄÀà³ÉÔ±±äÁ¿¿ÉÄÜÓëÈ«¾Ö±äÁ¿Í¬Ãû£¬ÎÒÃÇÒÔ"."À´Çø·Ö¡£¶ø±¾ÖÊÉÏ£¬±à
ÒëÆ÷ÔÚ½øÐбàÒëʱ£¬Ó뺯ÊýµÄ´¦ÀíÏàËÆ£¬Ò²ÎªÀàÖеıäÁ¿È¡ÁËÒ»¸ö¶ÀÒ»ÎÞ¶þµÄÃû×Ö£¬Õâ¸öÃû×ÖÓëÓû§³ÌÐòÖÐͬÃûµÄÈ«¾Ö±äÁ¿Ãû×Ö²»Í¬¡£
δ¼Ó
extern "C"ÉùÃ÷ʱµÄÁ¬½Ó·½Ê½
¼ÙÉèÔÚC++ÖУ¬Ä£¿éAµÄÍ·ÎļþÈçÏ£º
// Ä£¿éAÍ·Îļþ¡¡moduleA.h
#ifndef
MODULE_A_H
#define MODULE_A_H
int foo( int x, int y );
#endif¡¡
¡¡
ÔÚÄ£¿éBÖÐÒýÓøú¯Êý£º
// Ä£¿éBʵÏÖÎļþ¡¡moduleB.cpp
# include
Ïà¹ØÎĵµ£º
1.ÒýÑÔ
¡¡¡¡±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËƼòµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½ÁËÔõÑùµÄ ......
ÉÏÖÜÀÏ°å·ÖÏÂÀ´6¸öְλÈí¼þ¿ª·¢·½ÃæµÄְλ¸øÎÒ£¬ÒªÎÒ°´Ö°Î»ÒªÇóÑ°ÕÒºÏÊʵÄÈ˲š£¾ÓÈ»ÊÇC/C++!¾ÝÎÒËùÖª£¬ÔÚÈ˲ſâÖУ¬JAVA È˲ŵ¹ÊÇÓ¦Óо¡ÓУ¬Ñ§CµÄ£¬»¹ÊÇǶÈëʽ¿ª·¢µÄ¿ÉÕæµÄºÃÉÙ°¡¡£ÎÒÓÖ²»ÊÇŮ洣¬ÄѵÀÎÒ»áÔìÈ˲Åô£¿ÒªÇóÌõ¼þ»¹Õâô¸ß£¡
ÒÔÏÂÊÇ´óÁ¬Èí¼þÔ°¼¸¼ÒÖªÃûÍâÆóίÍÐÎÒÃÇÕÐƸµÄְλÐÅÏ¢¡£
Position 1 Èí¼þ¿ª·¢¹¤³Ìʦ ......
C/C++λ²Ù×÷
Ò»¡¢´«Í³µÄC·½Ê½Î»²Ù×÷£º
1.»ù±¾²Ù×÷£º
ʹÓÃÒ»¸öunsigned int±äÁ¿À´×÷ΪλÈÝÆ÷¡£
2.²Ù×÷·û£º
| °´Î»»ò²Ù×÷·û£ºresult=exp1|exp2;µ±exp1ºÍexp2ÖжÔӦλÖÐÖÁÉÙÓÐÒ»¸öΪ1ʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
& °´Î»Óë²Ù×÷·û£º£ºresult=exp1&exp2;µ±exp1ºÍexp2ÖжÔӦλȫΪ1ʱ ......
ÔÚc++ primeÊéÖп´µ½¹ý£¬ÔÚDLLºÍlibÖп´µ½¹ý£¬µ«ÊÇÿ´Î¿´¹ý¾Í²»ÇóÉõ½âµØһɨ¶ø¹ý¡£ÐÄÀïÖªµÀÓÐextern cÕâ¸öÓï¾ä£¬È´²»ÖªµÀ¸ÃÓÃÔÚÄÄÀÓÖÄÜÆðµ½Ê²Ã´×÷Óᣰ¦£¬ÏëÏë×Ô¼ºÒ²ËãÊÇд¹ý²»ÉÙCODEµÄÈËÁË£¬¿ÉÕâÖÖÑÛ¸ßÊֵ͵Ä벡ȴ´Óû¸Ä±ä¹ý¡£½ñÌìͻȻÏëÆðexternÕâ¸ö¹Ø¼ü×Ö£¬Ëì¾ö¶¨²»ÄÜÔÙÕâôÀË ......
1.·Ö²ãÉè¼Æ£¬¸ôÀëƽ̨Ïà¹ØµÄ´úÂë¡£¾ÍÏñ¿É²âÊÔÐÔÒ»Ñù£¬¿ÉÒÆÖ²ÐÔÒ²Òª´ÓÉè¼Æ×¥Æð¡£Ò»°ãÀ´Ëµ£¬×îÉϲãºÍ×îϲ㶼²»¾ßÓÐÁ¼ºÃµÄ¿ÉÒÆÖ²ÐÔ¡£×îÉϲãÊÇ
GUI£¬´ó¶àÊýGUI¶¼²»ÊÇ¿çƽ̨µÄ£¬ÈçWin32 SDKºÍMFC¡£×îϲãÊDzÙ×÷ϵͳAPI£¬´ó¶à²¿·Ö²Ù×÷ϵͳAPI¶¼ÊÇרÓõġ£
¡¡¡¡
Èç¹ûÕâÁ½²ãµÄ´úÂëÉ¢²¼ÔÚÕû¸öÈí¼ ......