c++动态库中使用命名空间的问题

这是C++才会有的语言特性.
假如你使用一个程序库,他里面有桓霰淞拷衋bc,但是你自己也不小心定义了一个叫abc的变量,这样就会引起重定义错误.所以为了避免这种现象,C++引入了名字空间(namespace)的概念,编写程序库的时候最好把所有东西放在一个namespace中,例如
namespace MY
{
int abc;
char cab;
}
这样,你在外界就要通过MY::abc来访问MY里面的abc,而如果你自己在外面定义了一个叫abc的变量,不会引起重定义的错误.直接调用abc会调用你自己定义的abc,而只有用MY:abc才会真正调用出MY里面的abc
但是这样未免太麻烦,如果你确保你不会重复使用别人程序库里的名字,你就可以把他的名字空间里所有名字全部调出,这个过程就是using namespace,例如我输入
using namespace MY;

这样,下面我再调用abc时,就会自动调用MY里面的abc了

extern "C"  按照C规则编译,即按函数名编译(不能重载),估计C规则没有namespace 

可是小编发现,导出的动态c++库中使用下面这样的格式没问题:

#ifdef __cplusplus
extern "C" {
#endif

.......

#ifdef __cplusplus
};
#endif

不是很理解什么个原理,还希望知道的人帮忙讲明白,万分感谢!!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值