我有一个C ++库,可以完成一些数字工作。主要参数是段数。对于速度而言,段数为const
的因素为3,但是我想在编译时使用-DSEGMENTS 32
来定义它。标题如下所示:
#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
有效。但是,与此库链接的程序无法获得-DSEGMENTS
,因此segments
始终为20.没有const
我知道解决方案,但我不知道。我可以设想一些extern
技巧或在预编译后安装标头,如果可以使用cmake。
答案 0 :(得分:5)
如果您希望其他库从外部取值,您应该在标题中将其声明为外部:
extern const int segments;
您可以在一个代码文件(.cpp)中定义它,如上所述:
#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif