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

CÖÐÈçºÎµ÷ÓÃC++º¯Êý

CÖÐÈçºÎµ÷ÓÃC++º¯Êý?
 
ǰÕó×Ó±»Îʼ°Ò»¸öÔÚCÖÐÈçºÎµ÷ÓÃC++º¯ÊýµÄÎÊÌ⣬µ±Ê±¼òµ¥»Ø´ðÊǽ«º¯ÊýÓÃextern "C"ÉùÃ÷£¬µ±±»Îʼ°ÈçºÎ½«ÀàÄÚ³ÉÔ±º¯ÊýÉùÃ÷ʱ£¬Ò»Ê±ÓïÈû£¬ºóÀ´ÍøÉϲéÁËÏ£¬ÍøÉÏÓÐÒ»·­ÒëC++Ö®¸¸µÄÎÄÕ¿ÉÒÔ×÷Ϊ½â´ð£¬ËìÄÃÀ´Markһϡ£
 
½« C++ º¯ÊýÉùÃ÷Ϊ``extern "C"''£¨ÔÚÄãµÄ C++ ´úÂëÀï×öÕâ¸öÉùÃ÷£©£¬È»ºóµ÷ÓÃËü£¨ÔÚÄãµÄ C »òÕß C++ ´úÂëÀïµ÷Óã©¡£ÀýÈ磺
// C++ code:
extern "C" void f(int);
void f(int i)
{
     // ...
}
 
È»ºó£¬Äã¿ÉÒÔÕâÑùʹÓà f()£º
/* C code: */
void f(int);
void cc(int i)
{
    f(i);
   /* ... */
    }
 
µ±È»£¬ÕâÕÐÖ»ÊÊÓÃÓڷdzÉÔ±º¯Êý¡£Èç¹ûÄãÏëÒªÔÚ C Àïµ÷ÓóÉÔ±º¯Êý£¨°üÀ¨Ð麯Êý£©£¬ÔòÐèÒªÌṩһ¸ö¼òµ¥µÄ°ü×°£¨wrapper£©¡£ÀýÈ磺
// C++ code:
class C
{
       // ...
       virtual double f(int);
};
 
extern "C" double call_C_f(C* p, int i) // wrapper function
{
       return p->f(i);
}
 
È»ºó£¬Äã¾Í¿ÉÒÔÕâÑùµ÷Óà C::f()£º
/* C code: */
double call_C_f(struct C* p, int i);
 
void ccc(struct C* p, int i)
{
       double d = call_C_f(p,i);
       /* ... */
}
 
Èç¹ûÄãÏëÔÚ C Àïµ÷ÓÃÖØÔØº¯Êý£¬Ôò±ØÐëÌṩ²»Í¬Ãû×ֵİü×°£¬ÕâÑù²ÅÄܱ» C ´úÂëµ÷Óá£ÀýÈ磺
// C++ code:
void f(int);
void f(double);
 
extern "C" void f_i(int i) { f(i); }
extern "C" void f_d(double d) { f(d); }
 
È»ºó£¬Äã¿ÉÒÔÕâÑùʹÓÃÿ¸öÖØÔØµÄ f()£º
/* C code: */
void f_i(int);
void f_d(double);
 
void cccc(int i,double d)
{
       f_i(i);
       f_d(d);
       /* ... */
}
×¢Ò⣬ÕâЩ¼¼ÇÉÒ²ÊÊÓÃÓÚÔÚ C Àïµ÷Óà C++ Àà¿â£¬¼´Ê¹Äã²»ÄÜ£¨»òÕß²»Ï룩ÐÞ¸Ä C++ Í·Îļþ¡£
 ¸Ã·­ÒëµÄÎĵµBjarne StroustrupµÄÔ­ÎÄÁ´½ÓµØÖ·ÊÇ
http://www.research.att.com/~bs/bs_faq2.html#callCpp


Ïà¹ØÎĵµ£º

JavaºÍC++λÔËËã¶Ô±È

ΪÁËʵÏÖÁ½¸öÊý×Ö½øÐн»»»£¬ÎÒÃÇͨ³£¿ÉÒÔÀûÓÃλÔËËãÀ´ÊµÏÖ
C++³ÌÐò     swap(int a  ,int b){a^=b^=a^=b;}
JAVA³ÌÐò    swap(int a, int b){  a^=b;b^=a;a^=b; }»òÕß{ b^=(a^=b) ; a^=b;}
Èç¹ûJAVAÓÃC++µÄʵÏÖ·½Ê½Ôò»áµÃµ½ bµÃµ½ÁËaµÄÖµ£¬µ«ÊÇaÏÖÔÚµÄֵȴ² ......

Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í

Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í
DelphiÊý¾ÝÀàÐÍC/C++
ShorInt
8λÓзûºÅÕûÊý
char
Byte
8λÎÞ·ûºÅÕûÊý
BYTE,unsigned short
SmallInt
16λÓзûºÅÕûÊý
short
Word
16λÎÞ·ûºÅÕûÊý
unsigned short
Integer,LongInt
32λÓзûºÅÕûÊý
int,long
Cardinal,LongWord/DWORD
32λÎÞ·ûºÅÕûÊý
unsigned long
Int6 ......

c/c++µÄ֪ʶµãÊÕ¼¯

1.¶¯Ì¬»ñµÃÄÚ´æµÄ´úÂë:
void GetMemory(char **p, int num)
{
  *p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
  char* p = (char *)malloc(sizeof(char) * num);
  return p;
}
------------------------------------------
´íÎóµÄ´úÂë:
void Ge ......

´Óº¯Êý·µ»ØÒ»¸öÊý×éµÄ2ÖÖ·½·¨ (Cר¼Ò±à³Ì p230)

ÑϸñÀ´Ëµ£¬ÎÞ·¨´Óº¯Êý·µ»ØÒ»¸öÊý×飬µ«¿ÉÒÔ´Óº¯Êý·µ»ØÒ»¸öÖ¸ÏòÈκÎÊý¾Ý½á¹¹µÄÖ¸Õ룬°üÀ¨Ò»¸öÖ¸ÏòÊý×éµÄÖ¸Õë¡£
Ò»ÖÖ·½Ê½ÈçÏ£º
#include <stdio.h>
#include <stdlib.h>
int (*func())[20];//funcÊÇÒ»¸öº¯Êý£¬Ëü·µ»ØÒ»¸öÖ¸Ïò°üÀ¨20¸öintÔªËØµÄÊý×éµÄÖ¸Õë
int main(void)
{
      ......

C/C++´«µÝ¶þάÊý×é

C/C++´«µÝ¶þάÊý×é - [IT×ÊÁÏ]
//cÓïÑÔÖо­³£ÐèҪͨ¹ýº¯Êý´«µÝ¶þάÊý×飬ÓÐÈýÖÖ·½·¨¿ÉÒÔʵÏÖ£¬ÈçÏ£º
//·½·¨Ò»£¬ Ðβθø³öµÚ¶þάµÄ³¤¶È¡£
#include <stdio.h>
void func(int n, char str[][5])
{
           int i;
      & ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ