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;
}