Yes; ISO standard standard library. It may not cover all the features you want, but that is precisely because it is common, and as such is also the lowest common denominator. It only supports features that can reasonably be expected on most hardware, including embedded systems.
A way to approach this is to possibly indicate the range of target platforms that you need to support, and then the application domains (e.g., GUI, network connectivity, multithreading, image processing, file processing, etc.), and then select individual cross-platform libraries that meet your needs. There is probably no library to meet all your needs, and in some cases there is no shared library at all.
However, you will always be better served in this regard, hugging C ++, where you can use any C library, as well as C ++ libraries. The C ++ Standard Library is not only larger, but libraries such as Boost, wxWidgets, ACE also cover a wider range of domains. Another approach is to use a cross-platform language, such as Java, that solves the problem by abstracting the hardware into a virtual machine. Similarly, .NET / Mono and C # can provide a solution for a limited set of target platforms.
The following comment was added: The operating system provides hardware abstraction in the target language of the real machine (as opposed to a virtual machine language such as Java or CLR), so you may need a common operating system API. POSIX is probably closest to this, supporting Linux, Unix, OSX (Unix), QNX, VxWorks, BeOS, and many others; but not the main thing is Windows. One way to use POSIX on Windows is to use Cygwin. Another is to use a virtual machine to host a POSIX OS such as Linux.
Clifford
source share