有关C++头文件重复的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:32:58
我建立了三个文件,1个头文件Function.h,一个类文件a.cpp 一个主函数文件Main.cpp。代码如下:

Function.h的代码:
class number;

a.cpp的代码:
#include <iostream>
#include "Function.h"
using namespace std;

class number {
private:
int _one,_tow,_three,_four;
public:
number()
:_one(1),_tow(2),_three(3),_four(4) {}

~number() {
cout<<"析构"<<endl;
}

void N();
};

void number::N() {
int nm = 0;
for(int a = 0; a < 4; a++)
for(int b = 0; b < 4; b++)
for(int c = 0; c < 4; c++) {
if(a == b || a == c || b == c)
continue;
else {
++nm;
cout <<a<<b<<c<<endl;
}
}
cout<<nm<<endl;
}
Main.cpp的代码:
#include <iostream>
#include "Function.h"
#include "a.cpp"
using namespace std;

谁说重复包含就报错。。

重复包含几百次也不是什么错, 如果有错,错在里面的东西不可以重复出现多次, 而这里里面的东西重复出现是语法允许的, 所以当然不会有什么错

include唯一意义就是吧那个文件的内容替换到这个位置来,没别的讲究

显然我说的“东西”不是头文件, 而是C语言的语法结构。 首先你要搞清一个概念, #include是编译预处理的语法结构, 而不是C语言的。 C语法本身并不知道#include的存在,所以它也不会在意你include多少次。 他在意的是, 比如如果你头文件里有一个变量定义: int a =10; 那么当你include这个头文件多次展开后就定义了这个变量多次, 这当然就违反C的语法规则。 所以是否可以include多次这个问题不在于include本身而在于展开后的结果是不是能接受。

现在所有标准头文件都可以重复include而不会产生不良影响。 自己写的头文件在vc下可以第一句加上#pragma once也就可以重复include。 别的头文件只能说看情况。 如果你遇到一刀切说不能重复include的要么是在瞎写骗钱,要么是你断章取义

你写一千个也不会重复!
#ifnder是预编译的
这样说吧,include就是包含的意思,你include一个文件后就可以调用那个文件里面的函数。include某个文件,就是相当于说了一句这个文件里的函数可以被调用,请问你说一千次和说一次会有什么区别?
当然有区别?
区别就是你会说的很累,累的半死,,哈哈,玩笑而已