【发布时间】:2014-12-20 06:22:05
【问题描述】:
我想知道是否可以通过将枚举放入结构中来限制它的访问方式。我知道这可以在 C++ 中工作(这就是我的想法),但我不知道它是否可以在 c 中工作。因此,例如,如果我有两个不同的结构
struct SaticArrayA
{
enum { MAX_SIZE = 10 };
int array[MAX_SIZE];
};
struct SaticArrayB
{
enum { MAX_SIZE = 20 };
int array[MAX_SIZE];
};
这会接近编译吗?基本上,我想做我在 C++ 中会做的事情,并给自己一个跨“类”的通用命名约定,这样我就可以询问任何数组它的大小是多少,等等。
(p.s. 我本质上是想在 c 中给自己一个更好的静态数组,在我尝试将它传递到另一个范围时,它不会丢失大小信息(通过衰减到指针)。
【问题讨论】:
-
显而易见的替代方法是采用命名约定,并将常量命名为
STATIC_ARRAY_A__MAX_SIZE,在这种情况下,我可能会使用#define而不是enum。问题是信息是否可以属于结构(不可变)
标签: c struct enums namespaces scope