extern "C"Ïê½â
ʱ³£ÔÚcppµÄ´úÂëÖ®Öп´µ½ÕâÑùµÄ´úÂë:
#ifdef __cplusplus
extern "C" {
#endif
//Ò»¶Î´úÂë
#ifdef __cplusplus
}
#endif
¡¡¡¡ÕâÑùµÄ´úÂëµ½µ×ÊÇʲôÒâË¼ÄØ£¿Ê×ÏÈ£¬__cplusplusÊÇcppÖеÄ×Ô¶¨Òåºê£¬ÄÇô¶¨ÒåÁËÕâ¸öºêµÄ»°±íʾÕâÊÇÒ»¶ÎcppµÄ´úÂ룬Ҳ¾ÍÊÇ˵£¬ÉÏÃæµÄ´úÂëµÄº¬ÒåÊÇ:Èç¹ûÕâÊÇÒ»¶ÎcppµÄ´úÂ룬ÄÇô¼ÓÈëextern "C"{ºÍ}´¦ÀíÆäÖеĴúÂë¡£
¡¡¡¡ÒªÃ÷°×ΪºÎʹÓÃextern "C"£¬»¹µÃ´ÓcppÖжԺ¯ÊýµÄÖØÔØ´¦Àí¿ªÊ¼ËµÆð¡£ÔÚc++ÖУ¬ÎªÁËÖ§³ÖÖØÔØ»úÖÆ£¬ÔÚ±àÒëÉú³ÉµÄ»ã±àÂëÖУ¬Òª¶Ôº¯ÊýµÄÃû×Ö½øÐÐһЩ´¦Àí£¬¼ÓÈë±ÈÈ纯ÊýµÄ·µ»ØÀàÐ͵ȵÈ.¶øÔÚCÖУ¬Ö»ÊǼòµ¥µÄº¯ÊýÃû×Ö¶øÒÑ£¬²»»á¼ÓÈëÆäËûµÄÐÅÏ¢.Ò²¾ÍÊÇ˵:C++ºÍC¶Ô²úÉúµÄº¯ÊýÃû×ֵĴ¦ÀíÊDz»Ò»ÑùµÄ.
¡¡¡¡±ÈÈçÏÂÃæµÄÒ»¶Î¼òµ¥µÄº¯Êý£¬ÎÒÃÇ¿´¿´¼ÓÈëºÍ²»¼ÓÈëextern "C"²úÉúµÄ»ã±à´úÂë¶¼ÓÐÄÄЩ±ä»¯:
int f(void)
{
return 1;
}
¡¡¡¡ÔÚ¼ÓÈëextern "C"µÄʱºò²úÉúµÄ»ã±à´úÂëÊÇ:
.file "test.cxx"
.text
.align 2
.globl _f
.def _f; .scl 2; .type 32; .endef
_f:
pushl %ebp
movl %esp£¬ %ebp
movl $1£¬ %eax
popl %ebp
ret
¡¡¡¡µ«ÊDz»¼ÓÈëÁËextern "C"Ö®ºó
.file "test.cxx"
.text
.align 2
.globl __Z1fv
.def __Z1fv; .scl 2; .type 32; .endef
__Z1fv:
pushl %ebp
movl %esp£¬ %ebp
movl $1£¬ %eax
popl %ebp
ret
¡¡¡¡Á½¶Î»ã±à´úÂëͬÑù¶¼ÊÇʹÓÃgcc -SÃüÁî²úÉúµÄ£¬ËùÓеĵط½¶¼ÊÇÒ»ÑùµÄ£¬Î¨¶ÀÊDzúÉúµÄº¯ÊýÃû£¬Ò»¸öÊÇ_f£¬Ò»¸öÊÇ__Z1fv¡£
Ã÷°×Á˼ÓÈëÓë²»¼ÓÈëextern "C"Ö®ºó¶Ôº¯ÊýÃû³Æ²úÉúµÄÓ°Ï죬ÎÒÃǼÌÐøÎÒÃǵÄÌÖÂÛ:ΪʲôÐèҪʹÓÃextern "C"ÄØ£¿C++Ö®¸¸ÔÚÉè¼ÆC++֮ʱ£¬¿¼Âǵ½µ±Ê±ÒѾ´æÔÚÁË´óÁ¿µÄC´úÂ룬ΪÁËÖ§³ÖÔÀ´µÄC´úÂëºÍÒѾдºÃC¿â£¬ÐèÒªÔÚC++Öо¡¿ÉÄܵÄÖ§³ÖC£¬¶øextern "C"¾ÍÊÇÆäÖеÄÒ»¸ö²ßÂÔ¡£
¡¡¡¡ÊÔÏëÕâÑùµÄÇé¿ö:Ò»¸ö
Ïà¹ØÎĵµ£º
´ÓÁ½µÀ¾µäÊÔÌâ̸C/C++ÖÐÁªºÏÌ壨union£©µÄʹÓÃ
ÊÔÌâÒ»£º±àдһ¶Î³ÌÐòÅжÏϵͳÖеÄCPUÊÇLittle endian»¹ÊÇBig endianģʽ£¿
·ÖÎö£º
×÷Ϊһ¸ö¼ÆËã»úÏà¹Ø×¨ÒµµÄÈË£¬ÎÒÃÇÓ¦¸ÃÔÚ¼ÆËã»ú×é³ÉÖж¼Ñ§Ï°¹ýʲô½ÐLittle endianºÍBig endian¡£Little endianºÍBig endianÊÇCPU´æ·ÅÊý¾ÝµÄÁ½ÖÖ²»Í¬Ë³Ðò¡£¶ÔÓÚÕûÐÍ¡¢³¤ÕûÐ͵ÈÊý¾ÝÀàÐÍ£ ......
1.Ö¸ÕëºÍÒýÓÃÓÐʲô·Ö±ð£»Èç¹û´«ÒýÓñȴ«Ö¸Õ밲ȫ£¬ÎªÊ²Ã´£¿Èç¹ûÎÒʹÓó£Á¿Ö¸ÕëÄѵÀ²»ÐÐÂð£¿
(1) ÒýÓÃÔÚ´´½¨µÄͬʱ±ØÐë³õʼ»¯£¬¼´ÒýÓõ½Ò»¸öÓÐЧµÄ¶ÔÏó£»¶øÖ¸ÕëÔÚ¶¨ÒåµÄʱºò²»±Ø³õʼ»¯£¬¿ÉÒÔÔÚ¶¨ÒåºóÃæµÄÈκεط½ÖØÐ¸³Öµ£®
(2) ²»´æÔڣΣգ̣ÌÒýÓã¬ÒýÓÃ±Ø ......
Ò»¸ö¶¨ÒåΪvolatileµÄ±äÁ¿ÊÇ˵Õâ±äÁ¿¿ÉÄܻᱻÒâÏë²»µ½µØ¸Ä±ä£¬ÕâÑù£¬±àÒëÆ÷¾Í²»»áÈ¥¼ÙÉèÕâ¸ö±äÁ¿µÄÖµÁË¡£¾«È·µØËµ¾ÍÊÇ£¬ÓÅ»¯Æ÷ÔÚÓõ½Õâ¸ö±äÁ¿Ê±±ØÐëÿ´Î¶¼Ð¡ÐĵØÖØÐ¶ÁÈ¡Õâ¸ö±äÁ¿µÄÖµ£¬¶ø²»ÊÇʹÓñ£´æÔڼĴæÆ÷ÀïµÄ±¸·Ý¡£ÏÂÃæÊÇvolatile±äÁ¿µÄ¼¸¸öÀý×Ó£º
1). ²¢ÐÐÉ豸µÄÓ²¼þ¼Ä´æÆ÷£¨È磺״̬¼Ä´æÆ ......
vaϵÁкêµÄÓ÷¨µÄÒ»°ã²½Ö裺
vsptr(char *format, ...) //ÇмǴ˴¦µÄ¸ñʽ
{
va_list argptr;
va_start(argptr, format); //ʹµÃargptrÖ¸ÏòÒÔformat¿ªÍ·µÄ´æ´¢¿Õ¼ä
va_arg(argptr, type); //È¡´«µÝµÄ²ÎÊý
......