²»¿ÉС¿´µÄextern "C"
ÏîÄ¿ÖÐÒªÓõ½Ò»¸öÄ£¿é¡£¿´ÁËϸÃÄ£¿éµÄÓ÷¨£¬¾ÍÒÀºù«»Æ°µÄ°áµ½×Ô¼ºµÄ´úÂëÀïÃæÀ´ÁË¡£²»¹ýÔÚ±àÒëµÄʱºòÅöµ½ÁËÂé·³£¬ ÔÚ³ÌÐòÁ´½ÓµÄʱºò³ö´í£º“undefined reference to***",Ó¦¸ÃÊÇÒòΪûÓаüº¬ÏàÓ¦µÄ¿âÎļþ°É¡£
ÓÚÊDZȽÏÁËmake fileÎļþµÄд·¨£¬ÊÔͼÔÚÎÒÕâ±ßµÄmakefile ÖмÓÉÏÏàÓ¦µÄ¿â¡£µ«ÊÇÕÛÌÚÁ˰ëÌ죬δ½â¾ö¡£ÔÚÍøÉÏËÑÁ˰ëÌ죬ûÓеãÍ·Ð÷£¬ºöȻһ¸öÌû×ÓÖеÄÒ»¾ä»°ÌáÐÑÁËÎÒ£¬“»òÕß¾ÍÊÇc£«£« ºÍc¶ÔͬÃûµÄº¯Êý±àÒë³öµÄº¯ÊýÃû×ÖÊDz»Ò»ÑùµÄ¡£ËùÒÔÄØÒªextern c”¡£¸Ï½ô¿´ÎÒÃǵĴúÂ룡¹ûÈ»£¬ÎÒÒýÓõÄÄ£¿éÊÇÓÃcдµÄ£¬µ«ÊÇËüµÄÏàÓ¦º¯ÊýûÓ÷ÅÔÚextern C{}ÄÚ£»¶øÎÒÕⲿ·ÖÓõÄÊÇC++¡£¡£¡£
ÓÚÊÇÔÚÏàÓ¦²¿Î»¼ÓÉÏ #ifdef __cplusplus
extern "C" {
#endif
ºÍ#ifdef __cplusplus
}
#endif¡£Á´½Óͨ¹ýÁË!
Ò»¸ö¾ÑéÊÇΪÁËc´úÂëÄÜÔÚC++Öз½±ãµÄʹÓã¬Ò»¶¨ÒªÔÚc³ÌÐòÏàӦͷÎļþÖмÓÉÏ extern "C"¡£
Ïà¹ØÎĵµ£º
ÐÅÔë±È( S N )ÊÇÖ¸´«ÊäÐÅºÅµÄÆ½¾ù¹¦ÂÊÓë¼ÓÐÔÔëÉùµÄƽ¾ù¹¦ÂÊÖ®±È¡£
ÔØÔë±È(C N )Ö¸ÒѾµ÷ÖÆµÄÐÅºÅµÄÆ½¾ù¹¦ÂÊÓë¼ÓÐÔÔëÉùµÄƽ¾ù¹¦ÂÊÖ®±È¡£
ËüÃÇͨ³£¶¼ÒÔ¶ÔÊýµÄ·½Ê½À´¼ÆË㣬µ¥Î»ÎªdB¡£
ÐÅÔë±ÈÓëÔØÔë±ÈÇø±ðÔÚÓÚ£¬ÔØÔë±ÈÖÐÒѵ÷ÐźŵŦÂʰüÀ¨ÁË´«ÊäÐźŵŦÂʺ͵÷ÖÆÔØ²¨µÄ¹¦ÂÊ£¬¶øÐÅÔë±ÈÖнö°üÀ¨´«ÊäÐźŵŦÂÊ£¬Á½ÕßÖ®¼äÏà²îÒ ......
ÈÝÒ×´íÎóµÄʹÓÃÖ¸Õë:
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100); // str ÈÔȻΪ NULL
strcpy(str, "hello"); // ÔËÐдíÎó
}
벡³öÔÚº¯ÊýGetMemory ÖС£±àÒëÆ÷×ÜÊÇÒ ......
ÈÃÎÒÃÇ´ÓÒ»¸ö·Ç³£¼òµ¥µÄÀý×Ó¿ªÊ¼£¬ÈçÏ£º
int n;
Õâ¸öÓ¦¸Ã±»Àí½âΪ“declare n as an int”£¨nÊÇÒ»¸öintÐ͵ıäÁ¿£©¡£
½ÓÏÂÈ¥À´¿´Ò»ÏÂÖ¸Õë±äÁ¿£¬ÈçÏ£º
int *p;
Õâ
¸öÓ¦¸Ã±»Àí½âΪ“declare p as an int *”£¨pÊÇÒ»¸öint
*Ð͵ıäÁ¿£©£¬»òÕß˵pÊÇÒ»¸öÖ¸ÏòÒ»¸öintÐͱäÁ¿µÄÖ¸Õë¡£ÎÒÏëÔÚÕ ......
CÓïÑԺ궨ÒåʵÓÃ×ܽá
ºê¶¨ÒåÁËÒ»¸ö´ú±íÌØ¶¨ÄÚÈݵıêʶ·û¡£
Ô¤´¦Àí¹ý³Ì»á°ÑÔ´´úÂëÖгöÏֵĺê±êʶ·ûÌæ»»³Éºê¶¨ÒåʱµÄÖµ¡£
ºê×î³£¼ûµÄÓ÷¨ÊǶ¨Òå´ú±íij¸öÖµµÄÈ«¾Ö·ûºÅ¡£
ºêµÄµÚ¶þÖÖÓ÷¨ÊǶ¨Òå´ø²ÎÊýµÄºê£¬ÕâÑùµÄºê¿ÉÒÔÏóº¯ÊýÒ»Ñù±»µ÷Ó㬵«ËüÊÇÔÚµ÷ÓÃÓï¾ä´¦Õ¹¿ªºê£¬²¢Óõ÷ÓÃʱµÄʵ¼Ê²ÎÊýÀ ......