跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 用 C 写一个动态库,需要注意什么,不想暴露任何数据结构,只提供 api。应该怎么去做?
未分類
30 10 月 2020

用 C 写一个动态库,需要注意什么,不想暴露任何数据结构,只提供 api。应该怎么去做?

用 C 写一个动态库,需要注意什么,不想暴露任何数据结构,只提供 api。应该怎么去做?

資深大佬 : ReputationZh 0

> 不想暴露任何数据结构,只提供 api 。

正常写就好了,为什么会暴露?没明白你遇到了什么问题。

大佬有話說 (16)

  • 資深大佬 : ysc3839

    typedef struct mystruct *mystruct_t;

    mystruct_t mystruct_new(…);
    void mystruct_destroy(mystruct_t);
    ….

    这样头文件里不会暴露这个结构体的细节

  • 資深大佬 : lcdtyph

    不透明指针

  • 資深大佬 : RoyceLee

    入参、出参、返回值只用自带类型( int 、float 、char 等以及对应的数组、指针),不要用任何自定义类型就好了。

  • 資深大佬 : GM

    c 又没有保留编译信息,你头文件不给数据结构,谁还能知道你的数据结构不成?

  • 資深大佬 : optional

    用 handle 啊,相当于令牌(token)。如果 api 之间有关联(比如第 2 个 api 用到第 1 个 api 的运算结果),就可以使用 handle 来传递信息,handle 就是内部数据的指代名称,外界看不到。

  • 資深大佬 : sillydaddy

    删掉文档,删掉提交记录?

  • 資深大佬 : xiangyuecn

    头文件只写结构体的前向声明和函数声明,实现放到.c 里面。

  • 資深大佬 : nightwitch

    handle +1

  • 資深大佬 : TreStone

    2 正解。。用 handle 那套逻辑会更麻烦

  • 資深大佬 : icyalala

    迭代器?

  • 資深大佬 : 23571113

    gcc 的话可以用__attribute__ visibility 显式控制哪些 symbol 你要 export,配合-fvisibility=hidden 去掉那些不该暴露的 symbol

    定义 opaque type 的话,typedef struct MyApiType MyApiType 就行了。

  • 資深大佬 : hitmanx

    学一下 qt 的源码?

  • 資深大佬 : tamlok

    我寻思就连 C++ 也能隐藏实现细节。。。
    —-

    // SomeThing.hpp:

    class SomeThingPrivate;

    class SomeThing {
    private:
    SomeThingPrivate *__actual_thing;

    public:
    SomeThing();

    void some_function();
    };

    // SomeThing.cpp

    class SomeThingPrivate {
    public:
    void some_function();
    };

    SomeThing::SomeThing() : __actual_thing(new SomeThingPrivate()) {
    };

    SomeThing::some_function() {
    this->__actual_thing->some_function();
    }

  • 資深大佬 : ipwx

    输入输出都是地址,里面是什么自己控制

  • 資深大佬 : yyid

    为啥要隐藏数据结构?这个很重要?

  • 資深大佬 : ychost

    https://en.cppreference.com/w/cpp/language/pimpl

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具