c - C 文件中无法识别 header 中定义的结构?

标签 c struct header include definition

我正在组织我的代码,以便我想将一些结构定义移动到一个头文件中,然后使用它们在一个单独的 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/

相关文章:

c - 回文检查器

html - 将圆形 Logo 添加到 magento 2 标题

r - 将标题添加到由 "write.csv"创建的文件

wcf - 异常发生时 header 中的自定义错误消息

c++ - 学习C++或C

c - 确定运行当前进程的用户

c - 如何打印从 pcap 文件读取的数据包的时间戳?

c - 在结构体中组织变量是否有任何陷阱

swift - 详尽测试 Swift 结构与 Equatable 一致性的方法?

c - 指向结构的指针在传递给函数时根本不改变