我正在组织我的代码,以便我想将一些结构定义移动到一个头文件中,然后使用它们在一个单独的 c 文件(不是主文件)中声明变量。
头文件:
#ifdef _InitSettingsGuard
#define _InitSettingsGuard
//Structure For Fault Levels
typedef struct FaultLevel{
FaultDef ThreePointThreeAux;
FaultDef Twelve;
FaultDef Five;
FaultDef ThreePointThree;
FaultDef PlusTwelveAux;
FaultDef NegTwelveAux;
}FaultLevel;
typedef struct FaultLevel{
FaultDef Test1;
FaultDef Test2;
FaultDef Test3;
}FaultLevel;
#endif
这是我声明变量的 c 文件:
#include "InitialSettings.h"
FaultLevel OneFaultLevel;
FaultLevel TwoFaultLevel;
FaultLevel ThreeLevel;
当我尝试编译时出现错误“未知类型名称‘FaultLevel’”我做错了什么?
最佳答案
这个:
#ifdef _InitSettingsGuard
#define _InitSettingsGuard
错了,逻辑颠倒了。你的意思是
#if !defined _InitSettingsGuard
或常用的缩写形式
#ifndef _InitSettingsGuard
重点是如果保护符号未定义,则读取 header 的其余部分。
此外: header 中没有声明名为 FaultLevel
的类型。只有 FaultDef
,所以要么改变用法:
FaultDef OneFaultLevel;
等等,当然也可以更改 typedef
:ed 名称。拿定主意。 :)
关于c - C 文件中无法识别 header 中定义的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096168/