zoukankan      html  css  js  c++  java
  • 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
    

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


  • 相关阅读:
    PHP多台服务器跨域SESSION共享
    php发送post请求到nodejs服务器
    xampp使用phpunit
    MarkdownPad 2
    php安装memcache注意事项
    yii 基础版用rbac-plus
    yii2高级版账号密码问题
    yii2 rbac-plus的使用
    manjaro-VM虚拟机vmmon错误
    Java并发包中的线程池ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7123484.html
Copyright © 2011-2022 走看看