extern¼°extern ¡°C¡±Ó÷¨
externÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©µÄ¹Ø¼ü×ÖËü¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹÓá£
1¡£¶ÔÓÚextern±äÁ¿À´Ëµ£¬½ö½öÊÇÒ»¸ö±äÁ¿µÄÉùÃ÷£¬Æä²¢²»ÊÇÔÚ¶¨Òå·ÖÅäÄÚ´æ¿Õ¼ä¡£Èç¹û¸Ã±äÁ¿¶¨Òå¶à´Î£¬»áÓÐÁ¬½Ó´íÎó
2¡£Í¨³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍÈ«¾Ö±äÁ¿ÒԹؼü×ÖexternÉùÃ÷¡£Ò²¾ÍÊÇ˵cÎļþÀïÃæ¶¨Ò壬Èç¹û¸Ãº¯Êý»òÕß±äÁ¿Ó뿪·Å¸øÍâÃæ£¬ÔòÔÚhÎļþÖÐÓÃextern¼ÓÒÔÉùÃ÷¡£ËùÒÔÍⲿÎļþÖ»ÓÃinclude¸ÃhÎļþ¾Í¿ÉÒÔÁË¡£¶øÇÒ±àÒë½×¶Î£¬ÍâÃæÊÇÕÒ²»µ½¸Ãº¯ÊýµÄ£¬µ«ÊDz»±¨´í¡£link½×¶Î»á´Ó¶¨ÒåÄ£¿éÉú³ÉµÄÄ¿±ê´úÂëÖÐÕÒµ½´Ëº¯Êý¡£
3¡£Óëextern¶ÔÓ¦µÄ¹Ø¼ü×ÖÊÇstatic£¬±»ËüÐÞÊεÄÈ«¾Ö±äÁ¿ºÍº¯ÊýÖ»ÄÜÔÚ±¾Ä£¿éÖÐʹÓá£
¡¡¡¡±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊǰ´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ£»
δ¼Óextern “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 "moduleA.h"
foo(2,3);
¡¡¡¡Êµ¼ÊÉÏ£¬ÔÚÁ¬½Ó½×¶Î£¬Á¬½ÓÆ÷»á´ÓÄ£¿éAÉú³ÉµÄÄ¿±êÎļþmoduleA.objÖÐѰÕÒ_foo_int_intÕâÑùµÄ·ûºÅ£¡
¡¡¡¡¼Óext
Ïà¹ØÎĵµ£º
±¾ÊÔÌâ½öÓÃÓÚ¿¼²éC++/C³ÌÐòÔ±µÄ»ù±¾±à³Ì¼¼ÄÜ¡£ÄÚÈÝÏÞÓÚC++/C³£ÓÃÓï·¨£¬²»Éæ¼°Êý¾Ý½á¹¹¡¢Ëã·¨ÒÔ¼°Éî°ÂµÄÓï·¨¡£¿¼ÊԳɼ¨ÄÜ·´Ó³³ö¿¼ÉúµÄ±à³ÌÖÊÁ¿ÒÔ¼°¶ÔC++/CµÄÀí½â³Ì¶È£¬µ«²»ÄÜ·´Ó³¿¼ÉúµÄÖÇÁ¦ºÍÈí¼þ¿ª·¢ÄÜÁ¦¡£
±ÊÊÔʱ¼ä90·ÖÖÓ¡£Ç뿼ÉúÈÏÕæ´ðÌ⣬ÇÐÎðÇáÊÓ¡£
Ò»¡¢ÇëÌîдBOOL , float, Ö¸Õë±äÁ¿ Óë“ÁãÖµ”±È½ÏµÄ i ......
LinuxÖеĽø³ÌͨÐÅ
1.¹ÜµÀ
º¯ÊýÔÐÍ£ºint pipe(int filedes[2]);
º¯Êý·µ»ØÖµ£º ÕýÈ··µ»Ø0£»´íÎó·µ»Ø-1
ÆäÖеÄÎļþÃèÊö·ûfiledes[0]ÊÇÓÃÀ´¶ÁÈ¡Êý¾ÝµÄ£¬filedes[1]ÊÇÓÃÀ´Ð´Êý¾ÝµÄ¡£
Àý×Ó1£º
#include<stdio.h>
#include<stdlib.h>
#include<u ......
(Ò»)ÕûÊý·ûºÅµÄÏÝÚå
(¶þ)¸¡µãÊýµÄ±¾ÖÊ
(Èý)¶ÑÕ»µÄÄÚ´æ¹ÜÀí½á¹¹
(ËÄ)·ûºÅ½âÎö
(Îå)¶ÔÆëºÍ×ÜÏß´íÎó
(Áù)º¯ÊýÖ¸Õë
(Æß)Ð麯ÊýµÄʵÏÖ»úÀí
(°Ë)ÒýÓõÄʵÏÖ»úÀí
(¾Å)ÐéÄâ¼Ì³Ð¶ÔÏóµÄÄÚ´æ½á¹¹
(Ê®)»ìºÏ±à³ÌʱµÄ³õʼ»¯Ë³Ðò
(ʮһ)Êý×éºÍÖ¸ÕëµÄÒìͬ ......
ÓÃC++µ÷ÓÃCµÄ¿âº¯Êý
C++µ÷ÓÃCµÄ¿âº¯Êýʱ£¬Èç¹ûÍ·Îļþ¶¨ÒåµÃ²»Ç¡µ±£¬¿ÉÄÜ»á³öÏÖÃ÷Ã÷ijº¯ÊýÔÚobjÎļþÖдæÔÚ£¬µ«ÊÇÈ´·¢ÉúÁ´½Óʧ°ÜµÄÇé¿ö£¬³öÏÖÈçÏ´íÎó:
undefined reference to 'xxx'
³öÏÖÎÊÌâµÄÔÒòÊÇc¿âº¯Êý±àÒë³ÉobjÎļþʱ¶Ôº¯Êý·ûºÅµÄ´¦ÀíºÍC++²»Í¬¡£ÒòΪC++º¯ÊýÖ§³ÖÖØÔØ£¬Ë ......
¼ÙÉèÔÚtest.hÖж¨ÒåÁËÒ»¸östatic bool g_test=false;
Èôtest1.cºÍtest2.c¶¼°üº¬test.h£¬Ôòtest1.cºÍtest2.c·Ö±ðÉú³ÉÁ½·Ýg_test£¬ÔÚtest1.c ÖÐÖÃg_test=true,¶øtest2.cÖÐÈÔȻΪfalse²¢Î´¸Ä±ä£¡shit£¡£¡
Ò»¡¢c³ÌÐò´æ´¢¿Õ¼ä²¼¾Ö
C³ÌÐòÒ»Ö±ÓÉÏÂÁв¿·Ö×é³É£º
1£©ÕýÎĶΗ—CPUÖ´ÐÐ ......