[编辑]:这不是“寻求建议”线程。 Boost分为几个称为“库”的模块,并且有一个有限的已知数量。我询问其中一些“图书馆”的特定用法。
BOOST.PREDEF,没有C ++特定代码,因此在C代码中效果很好。 BOOST.IO将此模块列为C++98
,但是我可以将其包含并与任何
C99
编译器一起使用[见下文]。向其来源稍微挖掘,还表明已经完成了一些工作以支持C汇编(示例:1
,2,3,4),所以我很好奇其中有多少其中其中有多少“图书馆”将与C一起使用,就像boost.predef一样。 类似于boost.predef,我的意思是仅C-Prepropersor-或不需要任何C ++功能来编译,或者允许在不编译C ++源的C ++源的情况下使用该模块的一部分。
我的问题是:还有其他C可以使用C中的增强库吗?有什么方法可以检测哪些库与C?兼容非常相关:哪个提升图书馆仅是标题?
# 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
尽管以C ++为目标,但很少有模块/库可以从C中起作用。这是可能的,因为这些模块/库仅取决于C预处理器,并且很少有条件构建路径使其与C-Con-Con-Compilers兼容。他们中的一些人使用
*.hpp
标头,但这并不能阻止C.
的使用。清单如下:
#ifdef __cplusplus
守护。 BOOST.PREDEF可用于检测主机的CPU体系结构,编译器,平台,OS和语言标准,所有这些都在编译时。 the是一个很好的例子。
BOOST.VMD-这是boost.preprocessor的扩展。尽管它没有明确提及对C的支持,但其文档(页面的底部)表示它仅取决于boost.preprocessor库。该库完全用C预处理器编写,并且不使用任何C ++特定的关键字,但是,我注意到它在许多地方都包装了逗号运算符,例如
(..., ..., ...,)
__attribute__
,并根据编译器将其交换。
注意,每个提升图书馆都生活在自己的存储库中,其中许多库是彼此独立的。您不需要整个包即可使用它们。只有很少的供应商作为