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

extern "C"

      ΪʲôÐèҪʹÓÃextern "C"ÄØ£¿C++Ö®¸¸ÔÚÉè¼ÆC++֮ʱ£¬¿¼Âǵ½µ±Ê±ÒѾ­´æÔÚÁË´óÁ¿µÄC´úÂ룬ΪÁËÖ§³ÖÔ­À´µÄC´úÂëºÍÒѾ­Ð´ºÃC¿â£¬ÐèÒªÔÚC++Öо¡¿ÉÄܵÄÖ§³ÖC£¬¶øextern "C"¾ÍÊÇÆäÖеÄÒ»¸ö²ßÂÔ¡£
¡¡¡¡ÊÔÏëÕâÑùµÄÇé¿ö:Ò»¸ö¿âÎļþÒѾ­ÓÃCдºÃÁ˶øÇÒÔËÐеúÜÁ¼ºÃ£¬Õâ¸öʱºòÎÒÃÇÐèҪʹÓÃÕâ¸ö¿âÎļþ£¬µ«ÊÇÎÒÃÇÐèҪʹÓÃC++À´Ð´Õâ¸öеĴúÂë¡£Èç¹ûÕâ¸ö´úÂëʹÓõÄÊÇC++µÄ·½Ê½Á´½ÓÕâ¸öC¿âÎļþµÄ»°£¬ÄÇô¾Í»á³öÏÖÁ´½Ó´íÎó.ÎÒÃÇÀ´¿´Ò»¶Î´úÂë:Ê×ÏÈ£¬ÎÒÃÇʹÓÃCµÄ´¦Àí·½Ê½À´Ð´Ò»¸öº¯Êý£¬Ò²¾ÍÊÇ˵¼ÙÉèÕâ¸öº¯Êýµ±Ê±ÊÇÓÃCд³ÉµÄ:
//f1.c
extern "C"
{
void f1()
{
return;
}
}
¡¡¡¡±àÒëÃüÁîÊÇ:gcc -c f1.c -o f1.o ²úÉúÁËÒ»¸ö½Ðf1.oµÄ¿âÎļþ¡£ÔÙдһ¶Î´úÂëµ÷ÓÃÕâ¸öf1º¯Êý:
// test.cxx
//Õâ¸öextern±íʾf1º¯ÊýÔÚ±ðµÄµØ·½¶¨Ò壬ÕâÑù¿ÉÒÔͨ¹ý
//±àÒ룬µ«ÊÇÁ´½ÓµÄʱºò»¹ÊÇÐèÒª
//Á´½ÓÉÏÔ­À´µÄ¿âÎļþ.
extern void f1();
int main()
{
f1();
return 0;
}
¡¡¡¡Í¨¹ýgcc -c test.cxx -o test.o ²úÉúÒ»¸ö½Ðtest.oµÄÎļþ¡£È»ºó£¬ÎÒÃÇʹÓÃgcc test.o f1.oÀ´Á´½ÓÁ½¸öÎļþ£¬¿ÉÊdzö´íÁË£¬´íÎóµÄÌáʾÊÇ:
test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
¡¡¡¡Ò²¾ÍÊÇ˵£¬ÔÚ±àÒëtest.cxxµÄʱºò±àÒëÆ÷ÊÇʹÓÃC++µÄ·½Ê½À´´¦Àíf1()º¯ÊýµÄ£¬µ«ÊÇʵ¼ÊÉÏÁ´½ÓµÄ¿âÎļþÈ´ÊÇÓÃCµÄ·½Ê½À´´¦Àíº¯ÊýµÄ£¬ËùÒԾͻá³öÏÖÁ´½Ó¹ý²»È¥µÄ´íÎó:ÒòΪÁ´½ÓÆ÷ÕÒ²»µ½º¯Êý¡£
¡¡¡¡Òò´Ë£¬ÎªÁËÔÚC++´úÂëÖе÷ÓÃÓÃCд³ÉµÄ¿âÎļþ£¬¾ÍÐèÒªÓÃextern "C"À´¸æËß±àÒëÆ÷:ÕâÊÇÒ»¸öÓÃCд³ÉµÄ¿âÎļþ£¬ÇëÓÃCµÄ·½Ê½À´Á´½ÓËüÃÇ¡£
¡¡¡¡±ÈÈ磬ÏÖÔÚÎÒÃÇÓÐÁËÒ»¸öC¿âÎļþ£¬ËüµÄÍ·ÎļþÊÇf.h£¬²úÉúµÄlibÎļþÊÇf.lib£¬ÄÇôÎÒÃÇÈç¹ûÒªÔÚC++ÖÐʹÓÃÕâ¸ö¿âÎļþ£¬ÎÒÃÇÐèÒªÕâÑùд:
extern "C"
{
#include "f.h"
}
¡¡¡¡»Øµ½ÉÏÃæµÄÎÊÌ⣬Èç¹ûÒª¸ÄÕýÁ´½Ó´íÎó£¬ÎÒÃÇÐèÒªÕâÑù×Ó¸Äдtest.cxx:
extern "C"
{
extern void f1();
}
int main()
{
f1();
return 0;
}
¡¡¡¡ÖØÐ±àÒë²¢ÇÒÁ´½Ó¾Í¿ÉÒÔ¹ýÈ¥ÁË.
¡¡¡¡×ܽá
¡¡¡¡CºÍC++¶Ôº¯ÊýµÄ´¦Àí·½Ê½ÊDz»Í¬µÄ.extern "C"ÊÇʹC++Äܹ»µ÷ÓÃCд×÷µÄ¿âÎļþµÄÒ»¸öÊֶΣ¬Èç¹ûÒª¶Ô±àÒëÆ÷ÌáʾʹÓÃCµÄ·½Ê½À´´¦Àíº¯ÊýµÄ»°£¬ÄÇô¾ÍҪʹÓÃextern "C"À´ËµÃ÷¡£
±¾ÎÄת×Ô£ºhttp://www.diybl.com/course/3_program/c++/cppsl/2008810/135631.html


Ïà¹ØÎĵµ£º

ÈçºÎÔÚC++Öе÷ÓÃCµÄ´úÂë

ÒÔÇ°Ôø¾­×ܽá¹ýһƪ(http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html
)£¬¹ØÓÚÔÚ
C
ÖÐÈçºÎµ÷ÓÃ
C++
µÄ´úÂ룬µ±Ê±²¢Î´×öÍêÈ«µÄÕ¹¿ª£¬Ö»ÊǼòµ¥µÄ×öÁËϵ÷ÊÔ£¬×î½ü¿´µ½Ò»¸öÌâĿҪÇóʵÏÖ
C
ºÍ
C++
ÖдúÂëµÄ»¥Ïàµ÷Óã¬Æä½á¹ûËäÈ»¶¼ÊÇͨ¹ý
extern “C”
À´ÊµÏÖ
£¬µ«ÊǾßÌ廹ÊÇÓÐЩ²î±ðµÄ¡ ......

Ò»µÀC±ÊÊÔÌâ

Author: Scurffybear Date: 2009.09.08
×î½üÔÚÕÐÐÂÈË£¬ÏÂÃæÊÇÒ»µÀCµÄÃæÊÔÌâ£¬ÃæÊÔµÄÓ¡¶ÈÈËÖУ¬Ã»ÓÐÒ»¸öÈË×ö¶Ô£¬ÎÒ´Ö¿´ÁËÒ»ÏÂÌ⣬ÔÚûÓп´´ð°¸Ç°£¬ÎÒ×Ô¼ºÒ²×ö´íÁË£¬àÅ£¬Êǵģ¬Ã»É¶²»ºÃÒâ˼µÄ£¬ÎÒ¾õµÃÕâ¸öÌâÄ¿ºÜÈÝÒ×ʹÈ˲úÉúÎó½â£¬ÓÖ»òÕßÔñ£ÃÓÐÉîºñ¹¦µ×µÄÈËÄܶã¹ýÕâÒ»¸öÕÏÑÛ·¨£¿
ÒÔÏÂÊÇÌâÄ¿£¬
main()
{
char * ......

Keil C51 vs ±ê×¼C

ÉîÈëÀí½â²¢Ó¦ÓÃC51¶Ô±ê×¼ANSICµÄÀ©Õ¹ÊÇѧϰC51µÄ¹Ø¼üÖ®Ò»¡£ÒòΪ´ó¶àÊýÀ©Õ¹¹¦Äܶ¼ÊÇÖ±½ÓÕë¶Ô8051ϵÁÐCPUÓ²¼þµÄ¡£´óÖÂÓÐÒÔÏÂ8 Àࣺ 8051´æ´¢ÀàÐͼ°´æ´¢ÇøÓòl;  ´æ´¢Ä£Ê½l´æ´¢Æ÷ÀàÐÍÉùÃ÷l±äÁ¿ÀàÐÍÉùÃ÷l λ±äÁ¿ÓëλѰַl  ÌØÊ⹦ÄܼĴæÆ÷(SFR)l C51Ö¸Õël  º¯ÊýÊôÐÔ¾ßÌå˵Ã÷ÈçÏÂ(8031ΪȱʡCPU)¡£
µÚÒ»½Ú Keil C ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ