Ich weiß, dass Boost -Bibliotheken für C ++ ausgelegt sind. Ich bin jedoch kürzlich auf boost.predef gestoßen, der nur vom C -Prozessor abhängt, keinen C ++ - spezifischen Code hat und somit im C -Code vollkommen gut funktioniert. Boost.io listet dieses Modul als C ++ 98 auf, aber ich kann es mit einem beliebigen C99 Compiler einfügen und verwenden. Ein wenig in seine Quelle graben boost.predef tut. C ++ -Funktionalität, die nur eine C ++-Kompilierung benötigen oder einen Teil des Moduls von C ohne Kompilieren von C ++-Quellen zu ermöglichen. Bibliotheken, die von C verwendet werden können? Gibt es eine Möglichkeit, zu erkennen, welche dieser Bibliotheken mit C?
möglicherweise zusammenhängen: Welche Boost-Bibliotheken sind nur Header?
< pre class = "Lang-Bash PrettyPrint-Override">
Code: Select all
# proof that boost.predef compiles and works with C
# get the source tree and create minimal compatible program
$ git clone https://github.com/boostorg/predef.git
$ echo '#include "boost/predef.h"' > main.c
$ echo 'int main(void) {return 0;}' >> main.c
# compile with very strict C99
$ cc -x c -std=c99 -Wpedantic -Werror -I./predef/include main.c
$ cc --version
cc (GCC) 14.2.1 2024091
# show every available macro
$ cc -x c -std=c99 -Wpedantic -Werror -I./predef/include -dM -E main.c | grep BOOST