不接受常量类型作为常量初始值设定项

const-type is not accepted as constant initializer

以下(简化的)代码段导致

error C2099: initializer is not a constant

在此代码段的最后一行:

static const char rowmans_1_width = 16;
...
const char rowmans_width[96] = {rowmans_1_width, rowmans_2_width, rowmans_3_width,...

所以 rowmans_1_width 被定义为 "const" 但编译器仍然抱怨它不是常量。当我将其编译为 C 代码时会发生这种情况,当作为 C++ 使用时它运行顺利。

我的问题:我现在必须使用 C 编译器,我不能简单地使用

#define rowmans_1_width 16

因为我不得不在非常不同的位置上做出很大的改变 - 意味着简单的 search/replace 是行不通的。那么,有什么办法可以解决这个问题吗?

谢谢!

没错,与 C++ 不同,const C 中的变量不是常量表达式

我认为除了使用预处理器之外没有其他可移植的方法:

#define rowmans_1_width 16