在const int上定义,但将值放在已安装的头文件中

时间:2011-12-19 14:10:25

标签: c++ cmake

我有一个C ++库,可以完成一些数字工作。主要参数是段数。对于速度而言,段数为const的因素为3,但是我想在编译时使用-DSEGMENTS 32来定义它。标题如下所示:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif

有效。但是,与此库链接的程序无法获得-DSEGMENTS,因此segments始终为20.没有const我知道解决方案,但我不知道。我可以设想一些extern技巧或在预编译后安装标头,如果可以使用cmake。

1 个答案:

答案 0 :(得分:5)

如果您希望其他库从外部取值,您应该在标题中将其声明为外部:

extern const int segments;

您可以在一个代码文件(.cpp)中定义它,如上所述:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif