我有一个C++库,可以完成一些数值工作.主要参数是段数.对于速度来说,重要的是段数为3的因素const,但是我想在编译时使用它来定义它-DSEGMENTS 32.标题看起来像这样:
#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)
这样可行.但是,与这个库连接的程序没有得到-DSEGMENTS,因此segments总是20.没有const我知道解决方案,但我不知道.extern如果可以使用cmake,我可以想象一些技巧或在预编译后安装标头.
如果您希望其他库从外部获取值,您应该在标头中将其声明为external:
extern const int segments;
Run Code Online (Sandbox Code Playgroud)
您可以像上面描述的那样在一个代码文件(.cpp)中定义它:
#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)