我有一个应用程序需要以分层方式在各种.h文件中定义索引。单个文件中有大量常见条目,并且有许多变体头文件被引入特定项目。
在档案中:“base.h”
#define AAA 1
#define BBB 2
#define CCC 3
在许多文件中,例如:“variant_extended.h”
#define XXX 4
#define YYY 5
#define ZZZ 6
但是,这很麻烦,是否有一种简单的方法可以从base.h继续并在构建过程中对定义进行自动编号?
我经常编辑文件以重新排序或插入新条目,从而导致大量的手动管理。我还需要确保数字从0开始并且是连续的。这些将是数组中的索引(如邮箱)。
答案 0 :(得分:2)
在base.h中,添加
#define BASE_LAST CCC
然后在你的variant_extended.h中,使用
#include "base.h"
#define XXX (BASE_LAST + 1)
#define YYY (BASE_LAST + 2)
#define ZZZ (BASE_LAST + 3)
答案 1 :(得分:2)
扩展Jerry的评论:
// base.h
enum BaseCodes
{
AAA = 1,
BBB,
CCC,
FirstExtendedCode
};
// extended.h
enum ExtendedCodes
{
XXX = FirstExtendedCode,
YYY,
ZZZ
}
在这种情况下,ZZZ保证为6.在枚举中插入新成员会自动重新编号所有其他成员。
答案 2 :(得分:0)
您可以通过执行以下操作来删除某些的痛苦:
//
// base.h
//
#define AAA 1
#define BBB 2
#define CCC 3
#define LAST_BASE CCC
和
//
// extended.h
//
#include "base.h"
#define FIRST_EXTENDED (LAST_BASE + 1)
#define XXX FIRST_EXTENDED
#define YYY (FIRST_EXTENDED + 1)
#define ZZZ (FIRST_EXTENDED + 2)
我怀疑如果我们获得更多信息可能会有更好的方法。