我遇到了一个无法解决的 C 编程问题。我有一个定义枚举的 global.h 头文件:
typedef enum
{
INIT,
VALID_DATA,
INVALID_DATA,
ETC.
}SYS_STATUS
在一个单独的头文件中,我有以下函数声明:
#ifndef GLOBAL_H
#define GLOBAL_H
#endif
void Set_Lamp(SYS_STATUS);
然后在 lamp.c 文件中的实际函数定义中我有:
#ifndef GLOBAL_H
#define GLOBAL_H
#endif
#include "lamp.h"
void Set_Lamp(SYS_STATUS sysStat)
{
Do stuff...
}
但是,当我编译时,我收到警告:“警告:函数声明中的参数名称(没有类型)”
和一个错误:“错误:‘sysStat’之前预期有‘)’”
你不能将枚举传递给函数吗?还是我只是做了一些愚蠢的事情?
提前谢谢大家。
我尝试将枚举传递到函数中,但我的编译器(Microchip 的 xc16 通过 MPLabx)抛出错误。
你需要:
枚举.h:
#ifndef EMUMS_H
#define EMUMS_H
typedef enum
{
INIT,
VALID_DATA,
INVALID_DATA,
ETC.
}SYS_STATUS
#endif
global.h:
#ifndef GLOBAL_H
#define GLOBAL_H
#include "enums.h"
void Set_Lamp(SYS_STATUS);
#endif
在你的源文件中:
#include "global.h"
void Set_Lamp(SYS_STATUS sysStat)
{
//Do stuff...
}
当然,你可以将枚举直接放在global.h文件中。
旁注:在你的 .h 文件中,守卫不保护任何东西。