打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c++动态库中使用命名空间的问题
userphoto

2017.09.23

关注
这是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++库中使用下面这样的格式没问题:

  1. #ifdef __cplusplus  
  2. extern "C" {  
  3. #endif  
  4.   
  5. .......  
  6.   
  7. #ifdef __cplusplus  
  8. };  
  9. #endif  

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iostream.h和iostream 区别
#include<iostream>与#include<iostream.h>及#inclue <string> 和 #include <string.h>的区别
c++小程序出错解决方法
命名空间std,using namespace std (转载)
C++程序中出现undefined reference to ......
linux C++ 第一个程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服