头文件中定义的结构体无法被include成功问题

lwq_qwl 2012-10-09 08:30:17
头文件A 包含了头文件B,但是B中定义了NTPARAM_NAT但是编译时显示A中的NTPARAM_NAT未定义,请高手分享下经验,多谢!
注:A和B同在一个目录下,A是能调用到B的。B文件首先包含了很多其它头文件会不会是产生问题的原因?

B中定义的结构体为:
typedef struct _ntparam_nat {
IPN IPVirt; // Virtual IP address
IPN IPMask; // Mask of virtual subnet
uint MTU; // NAT packet MTU (normally 1500 or 1492)
} NTPARAM_NAT;
A中调用结构体的形式为 :
// NAT Service Entry Data
typedef struct _ci_service_nat {
CISARGS cisargs; // Common arguments
NTPARAM_NAT param; // NAT parameters
} CI_SERVICE_NAT;
...全文
1631 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2013-03-06
  • 打赏
  • 举报
回复
引用 5 楼 jay8830095 的回复:
头文件的依赖顺序,
++
changing_better 2013-03-06
  • 打赏
  • 举报
回复
头文件的依赖顺序,
AndyZhang 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
a.h中的内容

C/C++ code

#ifndef A_H
#define A_H
#include "b.h"
typedef struct _ci_service_nat {
int cisargs; // Common arguments
NTPARAM_NAT param; // NAT parameters
} CI_SERVICE_NAT; ……
[/Quote]

不好意思啊,你的那些类型我这里没有,我全部改为int类型了,你可以加上相应的头文件让IPN 等类型有意义。
只是给你举个例子,绝对可以
AndyZhang 2012-10-09
  • 打赏
  • 举报
回复
a.h中的内容

#ifndef A_H
#define A_H
#include "b.h"
typedef struct _ci_service_nat {
int cisargs; // Common arguments
NTPARAM_NAT param; // NAT parameters
} CI_SERVICE_NAT;

#endif


b.h中的内容

#ifndef B_H
#define B_H
typedef struct _ntparam_nat {
int IPVirt; // Virtual IP address
int IPMask; // Mask of virtual subnet
int MTU; // NAT packet MTU (normally 1500 or 1492)
} NTPARAM_NAT;

#endif


test.cpp中的内容

#include "a.h"
#include <stdio.h>
int main()
{
CI_SERVICE_NAT tmp;
tmp.cisargs = 2;
tmp.param.IPMask = 1;
tmp.param.IPVirt = 1;
tmp.param.MTU = 1;
printf("%d%d%d%d\n", tmp.cisargs,tmp.param.IPMask,tmp.param.IPVirt,tmp.param.MTU);
return 0;
}


lz这样写没问题啊???
你可以试试哈
jixingzhong 2012-10-09
  • 打赏
  • 举报
回复
h文件本身不会参与编译。

在B文件增加防止重复包含的代码,
然后在你的cpp中,include A之前,include B就是了。
armsword 2012-10-09
  • 打赏
  • 举报
回复
把 NTPARAM_NAT param; 放到 typedef struct _ci_service_nat 声明下,试试。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧