Bootstrap

这样设计API,让接口更加健壮!

原文链接:https://www.yanbinghu.com/2020/11/07/61329.html

之前在《PIMPL-隐藏类的私有成员》中介绍了一种隐藏类的私有成员的方法,或者说隐藏接口实现细节的方法-PIMPL。
假设提供的接口的入参比较复杂,可能有人会考虑使用结构体作为入参。当你考虑这么做的时候,灾难也将会随之而来……

示例:

// 来源:公众号【编程珠玑】
// 作者:守望先生
// api.h
#include<iostream>
struct Param{
    int num;
    std::string str;
};
void TestFun(const Param &param);

// api.cc
#include "api.h"
void TestFun(const Param &param){
    std::cout<<"num:"<<param.num<<" str:"<<param.str.c_str()<<std::endl;
}

假设提供TestFun作为一个对外接口,我们编译并制作为静态库:

$ g++ -c api.cc -I./
$ ar -rcs libapi.a api.o 

关于静态库的制作,请参考《Linux下如何制作静态库?》。

;