#include 和其他的头文件会不会产生冲突,我已经在后面用了using namespace std;

时间:2021-07-30 10:02:51
大家看我的头文件用的有没有问题:
第一个cpp中:
#include "stdafx.h"
#include "AllBuild.h"
#include "Graph.h"
第2个cpp中:
#include "StdAfx.h"
#include "baiscobj.h"
#include "GetData.h"
#include "../include/BITMAP.H"
#include "math.h"
#include"stdio.h"
#include "stdlib.h"
#include "time.h"
第三个:
#include "stdafx.h"
#include "Build.h"
#include"AllBuild.h"
#include "math.h"
第4个:
#include "stdafx.h"
#include "C_Vigation.h"
第5个:
#include "MainFrm.h"
#include "C_VigationDoc.h"
#include "C_VigationView.h"
#include <vfw.h>
第6个:
#include "stdafx.h"
#include "C_Vigation.h"

#include "C_VigationDoc.h"
第7个:
#include "StdAfx.h"

#include "math.h"
#include "C_Vigation.h"
#include "C_VigationDoc.h"
#include "C_VigationView.h"
8:
#include "stdafx.h"
#include "C_Vigation.h"
#include "ControlView.h"
9:
#include "stdafx.h"
#include "GetData.h"
#include "baiscobj.h"
10:
#include "StdAfx.h"
#include "GLFont.h"
#include "baiscobj.h"
11:
#include "stdafx.h"
#include "Graph.h"
#include"math.h"
#include"Show2DView.h"
#include "iostream.h"
12:
#include "iostream.h"
#include "stdio.h"
#include <vector>
using namespace std;
#include "stdafx.h"
#include "C_Vigation.h"
#include "Show2DView.h"
#include "math.h"
#include "Graph.h"
13:#include "stdafx.h"
为什么会狂暴错
c:\program files\microsoft visual studio\vc98\include\ios.h(146) : error C2872: 'streambuf' : ambiguous symbol
c:\program files\microsoft visual studio\vc98\include\ios.h(159) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\vc98\include\ios.h(159) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\vc98\include\ios.h(160) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\vc98\include\ios.h(180) : error C2872: 'streambuf' : ambiguous symbol
c:\program files\microsoft visual studio\vc98\include\ios.h(207) : error C2872: 'streambuf' : ambiguous symbol....

14 个解决方案

#1


#2


"streambuf" ambiguous symbol的问题如何解决 
  会出现这种问题,一般是由于在程序中直接或者间接的同时引用了
 #include <stream.h> 和#inclued<stream>
 这两个一个是c++标准化之前的,一个是标准化之后的
 
 然后如果你又刚好在程序中使用了using namespace std;
 
 这样编译期就无法区别到底是要用哪个stream了。

 比如这次,我在ado2.h中,
 #include <string>
 
 同时又using namespace std;这样在我的程序中就导致了上述错误。
 解决的办法就是将
 using namespace std;改为
 using std::string;
 
 所以,结论就是,尽量不要使用 using namespace std;
 而是用到什么,就引入什么。


#3


使用
#include<iostream>吧,这里好像不用加.h吧

#4


MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。

#5


注意不要重复包含就行了。。。

#6


引用 4 楼 Mackz 的回复:
MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。 


还有注意头保护!

#7


将STL的相关库文件都放到stdafx.h中

如果可以的话,还是升级到VS2005或者vs2008吧

#8


引用 5 楼 LBPeking 的回复:
注意不要重复包含就行了。。。

#9


引用 4 楼 Mackz 的回复:
MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。

朋友你忘了一个条件“预编译头”如果你的工程采用预编译头则需要加入你设置的哪个预编译头文件
默认为stdafx.h

#10


问题在你第12个文件吧~ 可能是你其他文件多次包含它.
之前没加
#include <vector> 
using namespace std; 
是不是就连接通过呢?

把他放到最后~(在.h文件中吧)
在最上面加:
#pragma once
#include "stdafx.h" 
...

看看怎样了

#11


#include "stdafx.h"要放在最前面,另外注意是否有头文件重复包含的问题。

#12


引用 3 楼 thankall 的回复:
使用 
#include <iostream>吧,这里好像不用加.h吧

#13


使用#include <iostream>问题就解决了,虽然在你们回答此问题之前我就解决了,但是对于第一个正确回答的朋友还是要给分的,眼睛很亮

#14


我想问一下,#include "../include/BITMAP.H“是干你什么用的,我的程序中怎么打不开啊?

#1


#2


"streambuf" ambiguous symbol的问题如何解决 
  会出现这种问题,一般是由于在程序中直接或者间接的同时引用了
 #include <stream.h> 和#inclued<stream>
 这两个一个是c++标准化之前的,一个是标准化之后的
 
 然后如果你又刚好在程序中使用了using namespace std;
 
 这样编译期就无法区别到底是要用哪个stream了。

 比如这次,我在ado2.h中,
 #include <string>
 
 同时又using namespace std;这样在我的程序中就导致了上述错误。
 解决的办法就是将
 using namespace std;改为
 using std::string;
 
 所以,结论就是,尽量不要使用 using namespace std;
 而是用到什么,就引入什么。


#3


使用
#include<iostream>吧,这里好像不用加.h吧

#4


MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。

#5


注意不要重复包含就行了。。。

#6


引用 4 楼 Mackz 的回复:
MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。 


还有注意头保护!

#7


将STL的相关库文件都放到stdafx.h中

如果可以的话,还是升级到VS2005或者vs2008吧

#8


引用 5 楼 LBPeking 的回复:
注意不要重复包含就行了。。。

#9


引用 4 楼 Mackz 的回复:
MFC的工程,所有cpp文件必须加#include "stdafx.h" 而且必须加在最前面,此行之前的代码全部被忽略。

朋友你忘了一个条件“预编译头”如果你的工程采用预编译头则需要加入你设置的哪个预编译头文件
默认为stdafx.h

#10


问题在你第12个文件吧~ 可能是你其他文件多次包含它.
之前没加
#include <vector> 
using namespace std; 
是不是就连接通过呢?

把他放到最后~(在.h文件中吧)
在最上面加:
#pragma once
#include "stdafx.h" 
...

看看怎样了

#11


#include "stdafx.h"要放在最前面,另外注意是否有头文件重复包含的问题。

#12


引用 3 楼 thankall 的回复:
使用 
#include <iostream>吧,这里好像不用加.h吧

#13


使用#include <iostream>问题就解决了,虽然在你们回答此问题之前我就解决了,但是对于第一个正确回答的朋友还是要给分的,眼睛很亮

#14


我想问一下,#include "../include/BITMAP.H“是干你什么用的,我的程序中怎么打不开啊?