What is the design method of API
This article mainly explains "what is the design method of API". Interested friends may wish to have a look at it. The method introduced in this paper is simple, fast and practical. Next, let the editor take you to learn "what is the design method of API"?
Assuming that TestFun is provided as an external interface, we compile and make it into a static library:
$ar +-c api.cc-I. / $ar-rcs libapi.an api.o
For the production of static libraries, please refer to "how to make static libraries under Linux?"
Another program, main.cc, uses it like this:
/ / Source: official account programming Zhuji / / author: Mr. Shouwang # include "api.h" int main () {Param param; param.num = 10; param.str = "24"; TestFun (param); return 0;}
Compile links use:
$lapi +-o main main.cc-L.L /-lapi-I. / $. / main
There seems to be no problem, there are new parameters, can be directly added to the Param, scalability is also good.
Here comes the problem.
So far, there is no problem, but suppose there is another library to use it, such as:
/ / Source: official account programming Zhuji / / author: Mr. Shouwang / / use_api.h # include "api.h" void UseApi (); / / use_api.cc # include "use_api.h" void UseApi () {Param param; param.num = 10; param.str = "24"; TestFun (param);}
Also use it as a static library:
$ar +-c use_api.cc-I. / $ar-rcs libuse_api.a use_api.o
At this time, the same main program will use our original api, but different versions will be used. For example, a new field, ext, has been added to Param:
/ / Source: official account [programming Zhuji] / / author: Mr. Shouwang / / api.h # include struct Param {int num; std::string str; std::string ext;}; void TestFun (const Param & param); / / api.cc # include "api.h" void TestFun (const Param & param) {std::cout