如何构建一些 C 代码,以便我不必费力地返回
当我需要在中间添加新项目时,重新定义(即#define
)事物。
这是一个代码示例(在实际代码中,有大约200个不同的
定义):
#define CREAM 1
#define SALT 2
#define BUTTER 3
#define SUGAR 4
#define FAT 5
void healthyDiet()
{
int length = 10;
int menu[500];
void consume(int, int);
// ****** these must be called in the following order only
consume( menu[ CREAM ], length);
consume( menu[ SALT ], length);
consume( menu[ BUTTER ], length);
consume( menu[ SUGAR ], length);
consume( menu[ FAT ], length);
}
但是现在我需要#define
并添加LARD
,如果顺序那么这将是直截了当的
这里并不重要。但LARD
必须在SUGAR
之前和BUTTER
之后。所以
我现在需要编辑定义:
#define CREAM 1
#define SALT 2
#define BUTTER 3
#define LARD 4
#define SUGAR 5 // changed from 4
#define FAT 6 // changed from 5
那怎么样 我可以构建一些东西,这样每次我想在中间添加一些东西,我 不必返回并手动更改每个项目的定义值?
答案 0 :(得分:5)
您正在寻找enum
enum {CREAM, SALT, BUTTER, LARD, SUGAR};
要添加其他元素,只需添加它:
enum {CREAM, SALT, BUTTER, LARD, BACON, SUGAR};
你甚至可以像伪迭代器一样使用它:
enum {FIRST_ONE, CREAM=0, SALT, BUTTER, LARD, BACON, SUGAR, LAST_ONE};
void healthyDiet()
{
int length = 10;
int menu[500];
void consume(int, int);
int x;
for(x=FIRST_ONE; x<LAST_ONE; x++)
consume( menu[ x ], length);
}
答案 1 :(得分:3)
查看枚举: http://crasseux.com/books/ctutorial/enum.html
enum {CREAM, SALT, BUTTER, LARD, BACON, SUGAR};