嵌套调用易错问题

general.h内容如下:
#pragma once
#include "h1.h"
#include <iostream>
struct TT
{
  int a;
  int b;
};
再建一个h1.h文件,内容如下:
#include "general.h"
using namespace std;
void print(TT t)
{
 cout << "print" << t.a << " " << t.b << endl;
}

main.cpp里面调用print函数,提示错误,说未申明的标识符。。请问为什么??

main部分

#include "general.h"

using namespace std;

int main()
{
 TT t;
   t.a = 1;
    t.b = 3;
    print1(t);
  print2(t);

  system("PAUSE");
    return 0;
}
main里面include"h1.h"的话就不会有问题了,但是这样为什么不行??

 

general.h文件,声明结构体TT
#pragma once
/*
这里不需要#include "h1.h"
*/
#include <iostream>
struct TT
{
  int a;
  int b;
};
h1.h声明print方法,使用了结构体TT,需要#include "general.h",因为这个文件里包含了对TT的声明
#include "general.h"
using namespace std;
void print(TT t)
{
 cout << "print" << t.a << " " << t.b << endl;
}
main部分
/*
这里不是#include "general.h",而是#include "h1.h",因为h1.h中即包含了print方法的声明,同时也#include "general.h"包含了对TT结构体的声明
*/
#include "h1.h"
using namespace std;
int main()
{
 TT t;
   t.a = 1;
    t.b = 3;
    print1(t);
  print2(t);

  system("PAUSE");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值