Pae*_*ula 2 c function c-preprocessor
我如何构造一些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
那么我如何构建事物以便每次我想在中间添加一些东西时,我不必返回并手动更改每个项目的定义值?
您正在寻找 enum
enum {CREAM, SALT, BUTTER, LARD, SUGAR};
要添加anoter元素,只需添加它:
enum {CREAM, SALT, BUTTER, LARD, BACON, SUGAR};
您甚至可以像psudeo-iterator一样使用它:
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);
}