C在不同的文件之间共享多个枚举



如果我的术语不完美,我很抱歉,我是一个自学成才的程序员:)我的自动机器有不同的活动部件,对于每个部件,我都有一个C文件来处理它自己的状态机。每个C文件都有一个枚举,定义该状态机的所有状态,例如:

movingArm.c

enum { 
STANDBY = 0,
ARM_OPEN,
ARM_CLOSE,
ARM_WAIT  
};

void state_machine_arm()
{
switch(status_arm)
{
case STANDBY:
// ....
break;
/* etc */
}
} 

一切都运行顺利,但有时我必须从另一个文件检查一个状态机的状态,因此将所有枚举放在一个公共位置以供所有文件访问是很方便的。而不是每次检查哪个数字对应于哪个状态,并且有很大的丢失一些东西的风险。

所以问题是:这种情况下的最佳实践是什么?所有的枚举可以分组在一个单一的头文件,并包括在所有的。c文件?编辑:我补充了一些细节,也许我还不够清楚。如果从另一个文件anotherPart.c,我想检查手臂的状态:

if( get_status_arm() == ARM_OPEN )
{
// do something
}

我需要知道ARM_OPEN对应什么,所以ARM_OPEN也应该在anotherPart.c

中定义这就是为什么我考虑一个共同的头文件,以避免在另一个part .c中重新声明enum(如果我必须在enum中添加或更改某些内容,那将更加烦人)

那么问题是:这种情况下的最佳实践是什么?所有的枚举可以分组在一个单一的头文件,并包括在所有的。c文件?

是的,那将是最好的做法。typedef enum { ... } arm_state_t;在头文件中。然后在同一个文件中提供一个getter函数,它可以将内部状态返回给感兴趣的人:

arm_state_t get_status_arm (void);

同样,像往常一样,在标题中使用include保护符。用C

创建自己的头文件

最新更新