c和c++(c whith class)的相互调用&引用

c和c++生成函数符号规则不同

c++调用c      .cpp加extern"c"   

extern"c"下包含的是以c语言的规则来处理的

extern"c"//extern"c"下包含的代码是以c语言的规则来处理的
{
    extern int Sum(int,int)
}

c调用c++:  

                 1、c++源文件可以修改,.cpp加extern"c"

                 2、c++源文件不可以修改,加一个中间层MySum,MySum是对Sum的再包装

 

如下图所示b.c使用c的编译器,而a.c使用的编译器不能确定。

-Cplusplus  C++编译器里默认的宏。即若宏存在则是由C++编译器编译的

#ifdef ——Cplusplus
extern "c"
{
    #endif
        int Sum(int a,int b)
            {

                return a+b;
            }

            #ifdef——Cplusplus}
}

#endif

c++的引用——》别名

引用符号和类型结合    没有和类型结合就是取地址

引用的特点:

                    1、引用一定要初始化(底层以指针的形式支持在所有引用变量   使用的地方,系统自带解引用的过程)

                         int &b=a;

                         cout<<&b<<endl;//cout<<&(*b)<<endl;

                      2、引用不能引用不能取地址的数(寄存器里的值)

                      3、引用不能改变

                       4、引用变量使用时,使用的是引用变量,所引用的变量

常引用引用不能取地址的数据,首先数据生成临时量,常引用引用临时量(const int &c=15;            int &c=15(error))

函数不能返回局部变量的地址或引用(可能会导致数据错误 局部变量会在函数返回后被销毁 当函数调用完毕,栈指针回撤,函数生命周期结束,但这时内存存储的内容并没有改变   ,当这时调用其他函数时内存上的值可能被覆盖,所以可能会出现数据错误  )

static 局部变量//.data  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值