extern c×÷ÓÃ
Á´½Óָʾ·ûextern C
Èç¹û³ÌÐòԱϣÍûµ÷ÓÃÆäËû³ÌÐòÉè¼ÆÓïÑÔÓÈÆäÊÇC дµÄº¯ÊýÄÇôµ÷Óú¯Êýʱ±ØÐë
¸æËß±àÒëÆ÷ʹÓò»Í¬µÄÒªÇóÀýÈçµ±ÕâÑùµÄº¯Êý±»µ÷ÓÃʱº¯ÊýÃû»ò²ÎÊýÅÅÁеÄ˳Ðò¿ÉÄÜ
²»Í¬ÎÞÂÛÊÇC++º¯Êýµ÷ÓÃËü»¹ÊÇÓÃÆäËûÓïÑÔдµÄº¯Êýµ÷ÓÃËü
³ÌÐòÔ±ÓÃÁ´½Óָʾ·ûlinkage directive ¸æËß±àÒëÆ÷¸Ãº¯ÊýÊÇÓÃÆäËûµÄ³ÌÐòÉè¼ÆÓïÑÔ
±àдµÄÁ´½Óָʾ·ûÓÐÁ½ÖÖÐÎʽ¼È¿ÉÒÔÊǵ¥Ò»Óï¾äsingle statement ÐÎʽҲ¿ÉÒÔÊǸ´
ºÏÓï¾äcompound statement ÐÎʽ
// µ¥Ò»Óï¾äÐÎʽµÄÁ´½Óָʾ·û
extern "C" void exit(int);
// ¸´ºÏÓï¾äÐÎʽµÄÁ´½Óָʾ·û
extern "C" {
int printf( const char* ... );
int scanf( const char* ... );
}
// ¸´ºÏÓï¾äÐÎʽµÄÁ´½Óָʾ·û
extern "C" {
#include <cmath>
}
Á´½Óָʾ·ûµÄµÚÒ»ÖÖÐÎʽÓɹؼü×Öextern ºó¸úÒ»¸ö×Ö·û´®³£Á¿ÒÔ¼°Ò»¸öÆÕͨµÄº¯Êý
ÉùÃ÷¹¹³ÉËäÈ»º¯ÊýÊÇÓÃÁíÍâÒ»ÖÖÓïÑÔ±àдµÄµ«µ÷ÓÃËüÈÔÈ»ÐèÒªÀàÐͼì²éÀýÈç±àÒëÆ÷
»á¼ì²é´«µÝ¸øº¯Êýexit()µÄʵ²ÎµÄÀàÐÍÊÇ·ñÊÇint »òÕßÄܹ»ÒþʽµØ×ª»»³Éint ÐÍ
¶à¸öº¯ÊýÉùÃ÷¿ÉÒÔÓû¨À¨ºÅ°üº¬ÔÚÁ´½Óָʾ·û¸´ºÏÓï¾äÖÐÕâÊÇÁ´½Óָʾ·ûµÄµÚ¶þÖÖÐÎ
ʽ»¨Õкű»ÓÃ×÷·Ö¸î·û±íʾÁ´½Óָʾ·ûÓ¦ÓÃÔÚÄÄЩÉùÃ÷ÉÏÔÚÆäËûÒâÒåÉϸû¨À¨ºÅ±»ºö
ÂÔËùÒÔÔÚ»¨À¨ºÅÖÐÉùÃ÷µÄº¯ÊýÃû¶ÔÍâÊǿɼûµÄ¾ÍºÃÏñº¯ÊýÊÇÔÚ¸´ºÏÓï¾äÍâÉùÃ÷µÄÒ»Ñù
ÀýÈçÔÚÇ°ÃæµÄÀý×ÓÖи´ºÏÓï¾äextern "C"±íʾº¯Êýprintf()ºÍscanf()ÊÇÔÚC ÓïÑÔÖÐдµÄ
º¯ÊýÒò´ËÕâ¸öÉùÃ÷µÄÒâÒå¾ÍÈçͬprintf()ºÍscanf()ÊÇÔÚextern "C"¸´ºÏÓï¾äÍâÃæÉùÃ÷µÄ
Ò»Ñù
µ±¸´ºÏÓï¾äÁ´½Óָʾ·ûµÄÀ¨ºÅÖк¬ÓÐ#include ʱÔÚÍ·ÎļþÖеĺ¯ÊýÉùÃ÷¶¼±»¼Ù¶¨ÊÇÓÃ
Á´½Óָʾ·ûµÄ³ÌÐòÉè¼ÆÓïÑÔËùдµÄÔÚÇ°ÃæµÄÀý×ÓÖÐÔÚÍ·Îļþ<cmath>ÖÐÉùÃ÷µÄº¯Êý¶¼ÊÇC
º¯Êý
Á´½Óָʾ·û²»ÄܳöÏÖÔÚº¯ÊýÌåÖÐÏÂÁдúÂë¶Î½«»áµ¼Ö±àÒë´íÎó
int main()
{
// ´íÎó: Á´½Óָʾ·û²»ÄܳöÏÖÔÚº¯ÊýÄÚ
extern "C" double sqrt( double );
305 µÚÆßÕº¯Êý
double getValue(); //ok
double result = sqrt ( getValue() );
//...
return 0;
}
Èç¹û°ÑÁ´½Óָʾ·ûÒÆµ½º¯ÊýÌåÍâ³ÌÐò±àÒ뽫ÎÞ´íÎó
extern "C" double sqrt( double );
int main()
{
double getValue(); //ok
double result = sqrt ( getValue() );
//...
return 0;
}
µ«ÊǰÑÁ´½Óָʾ·û·ÅÔÚÍ·ÎļþÖиüºÏÊÊÔÚÄÇÀﺯÊýÉùÃ÷ÃèÊöÁ˺¯ÊýµÄ½Ó¿ÚËùÊô
Èç¹ûÎÒÃÇÏ£ÍûC++º¯ÊýÄ
Ïà¹ØÎĵµ£º
ÎÒ²»ÖªµÀÕâÆªÎÄÕµÄ×÷ÕßÊÇË£¬µ«ÎÒÖªµÀ£¬Ëû¶ÔjavaÓÐÒ»ÖÖºÜÉîµÄÀí½â£¬ÆäʵÎÄÕÂÖв¢Ã»ÓÐÌåÏÖ³ö×÷Õß¶Ôjava¼¼ÊõÉî²ãÀí½â£¬µ«ÊÇ´ÓÎÄÖеÄÿһ¾ä»°ÖУ¬ÎÒ¸ÐÊܵ½ÁËһЩ¶«Î÷¡£ÕâÊÇһƪºÜºÃµÄÎÄÕ£¬Ò²¿ÉÒÔ°ïÖúºÜ¶àÈËÃÔãµÄÈ˽â¾öÎÊÌâ¡£´øÀ´ºÍ´ó¼Ò·ÖÏíһϡ£
ǰ²»¾ÃCSDN¿¯µÇÁËһƪ¡¶CÓïÑÔÒѾËÀÁË¡·µÄÎÄÕ£¬ÒýÆðÁËһЩÕùÂÛ¡£ÆäʵÄÇÆ ......
CºÍC++ÓïÑÔѧϰ×ܽá(Ò»)
֪ʶ½á¹¹:
1¡¢if,for,switch,goto
2¡¢#define,const
3¡¢Îļþ¿½±´µÄ´úÂë,¶¯Ì¬Éú³ÉÄÚ´æ,¸´ºÏ±í´ïʽ,strcpy,memcpy,sizeof
4¡¢º¯Êý²ÎÊý´«µÝ,ÄÚ´æ·ÖÅ䷽ʽ,ÄÚ´æ´íÎó±íÏÖ,mallocÓënewÇø±ð
5¡¢ÀàÖØÔØ¡¢Òþ²ØÓ븲¸ÇÇø±ð,externÎÊÌâ,º¯Êý²ÎÊýµÄȱʡ
ÖµÎÊÌâ,ºê´úÂëÓëÄÚÁªº¯ÊýÇø±ð
6¡¢¹¹ÔìºÍÎö¹ ......
Îļþ
ÎļþµÄ»ù±¾¸ÅÄî
¡¡¡¡Ëùν“Îļþ”ÊÇÖ¸Ò»×éÏà¹ØÊý¾ÝµÄÓÐÐò¼¯ºÏ¡£ Õâ¸öÊý¾Ý¼¯ÓÐÒ»¸öÃû³Æ£¬½Ð×öÎļþÃû¡£ ʵ¼ÊÉÏÔÚÇ°ÃæµÄ¸÷ÕÂÖÐÎÒÃÇÒѾ¶à´ÎʹÓÃÁËÎļþ£¬ÀýÈçÔ´³ÌÐòÎļþ¡¢Ä¿±êÎļþ¡¢¿ÉÖ´ÐÐÎļþ¡¢¿âÎļþ (Í·Îļþ)µÈ¡£Îļþͨ³£ÊÇפÁôÔÚÍⲿ½éÖÊ(Èç´ÅÅ̵È)Éϵģ¬ ÔÚʹÓÃʱ²Åµ÷ÈëÄÚ´æÖÐÀ´¡£´Ó ......
1¡¢ int a=2,b=11,c=a+b++/a++; ÔòcֵΪ¶àÉÙ£¿
¡¾¿¼µã¡¿±àÂë¹æ·¶¡£
±íÃæÉÏ¿¼²ìÄã¶ÔÔËËã·ûÓÅÏȼ¶µÄÕÆÎճ̶ȣ¬µ«Êµ¼ÊÉÏÓÅÏȼ¶ÕâÐ©ÍæÒâºÜÄÑËÀ¼ÇÓ²±³µÃס£¿´ó¼ÒµÄÒɻ󲻾ÍÊÇÔËËã·ûµÄ½áºÏ˳Ðòô£¿ÄÇôÈçºÎÈ¥±ÜÃâÄØ£¿c=a+((b++)/(a++))²»¾ÍÐÐÁËô£¬ÆäʵÎÊÌâ±³ºó¿¼²ìµÄÊÇÄãµÄ±àÂë¹æ·¶£¬ÈçºÎдÇåÎúÒ×¶®µÄ´úÂ룬ÈçºÎÔÚÒ»¸öÍÅ ......
ΪÁËÓÃvcдһ¸ö×î¼òµ¥µÄ socket ³ÌÐò£¬»¨·ÑÁËÒ»¸öÏÂÎçµÄʱ¼ä£¬¹ý³ÌÖгöÏֵĴíÎóÓУº
'SOCKET' : illegal use of this type as an expression
syntax error : missing ';' before 'type'
syntax error : identifier 'InitWinsock' --> bool InitWinsock( ......