头文件引用多次的问题
//头文件 H1.H
#ifndef asdf
#define asdf
class a
{
public:
void f(int x,int y);
void g();
private:
int x,y;
};
#include<iostream>
void n()
{
std::cout<<"进入头文件"<<std::endl;
}
#endif
//文件gg.cpp 用于类a的实现
#include"H1.H"
#include<iostream>
void a::f(int a,int b)
{
x=a;y=b;
}
void a::g()
{
std::cout<<x<<' '<<y<<std::endl;
}
//主函数 kk.CPP
#include"H1.H"
int main()
{
a k;
k.f(1,4);
k.g();
n();
return 0;
}
编译时可过
连接时 出现错误
说 n()函数被重复定义
为什么 头文件中的
#ifndeif
#define asdf
。。。。。。
#endif
没有在用呢 ??
没有限定头文件的多次引入呢??
还有为什么编译可过 而连接是错呢
为什么呢 说说整个程序编译到连接的过程呀
...全文
相关推荐
C++的头文件互相包含的问题
: A* a; // 使用指针或引用 }; ``` 这样做允许在类`A`和`B`中使用对方的指针或引用,而无需完整的类型信息,从而避免了互相包含的问题。
VC++开发中完美解决头文件相互包含问题的方法解析
在VC++开发中,头文件相互包含问题是常见的编程挑战,特别是在设计复杂的类关系时。当一个类需要引用另一个类,而这两个类彼此依赖时,就会出现超前引用的问题。
C++头文件包含问题的详细总结
如果不恰当地处理头文件包含问题,就会出现重复编译的问题。**解决方法**:1. **使用条件编译**:为了避免头文件被多次包含,可以在每个头文件的顶部添加条件编译指令。
C语言头文件的使用与写法
若头文件位于当前目录或用户指定路径,则使用双引号`" "`,如:```c#include "myheader.h"```**头文件的保护**为了避免头文件被多次包含导致重复定义的问题,通常会在头文件中使用条件编译指令
C++中头文件相互包含的几点问题.docx
总结起来,遵循以下两点原则可以帮助处理头文件包含问题:1. **尽可能使用前置声明**:当只需要类的指针或引用,且不需要知道类的具体实现时,应优先使用前置声明,以减少头文件间的依赖。2.


