user401247
user401247

Reputation:

Should a C API be included in a distributable library?

I have written a C++ library to do some numerical analysis. Is there a programmatic advantage to include a C API interface to the library in addition to the C++ API?

Is this isn't an appropriate question for stackoverflow I can delete it.

Upvotes: 0

Views: 82

Answers (3)

Matthieu M.
Matthieu M.

Reputation: 299930

What has C over C++: a stable well-defined ABI.

There are multiple C++ ABIs (MSVC's and Itanium being the foremost) and each Standard Library implementation (Dirkumware, libstd++ or libc++ for examples) is incompatible with the others. Therefore, the only way for C++ code to correctly link with C++ code is to be compiled with the same compiler (or with compilers sharing the same ABI) and above the same Standard Library implementation.

C, however, is different. C compiled by gcc integrates smoothly with C compiled clang... but it goes well beyond. It integrates smoothly with C++, Python, Haskell, Java, Rust, Lua, Perl, ... most if not all "serious" languages can interact with C more or less smoothly.

So, what is the benefit of a C API over a C++ ? Smooth integration with virtually any programming language under the sun.

Upvotes: 3

AntiClimacus
AntiClimacus

Reputation: 1420

Yes, there is one: you need a C API if you would like to call your functions from C code. Unlike the C API, which can called also by your C++ code (extern "C" { ... }), this is not true for C++ API, which can't be call by your C code.

Upvotes: 2

Ed Heal
Ed Heal

Reputation: 60007

No there is no programmatic advantage to include a C API.

Guess it is down to marketing and what your customers want.

Upvotes: 0

Related Questions