error C2143: syntax error : missing ';' before 'PCH creation point'是什么错误(20分)

  • 主题发起人 主题发起人 lhlh_0_0
  • 开始时间 开始时间
L

lhlh_0_0

Unregistered / Unconfirmed
GUEST, unregistred user!
error C2143: syntax error : missing ';' before 'PCH creation point'是什么错误
多谢
 
少了分号,你应该贴代码。
可能有句法问题。
 
谢谢jsxjd
但又有疑问
我想使用string代替char
见下列代码
这个文件名为exp2
#include"depositor.cpp"
#include"math.h"
#include<string>
#include<iostream>
using namespace std;

void main()
{string aa;
char a[]="abc";
aa.assign(a);
cout<<aa<<endl;
}
注:depositor.cpp为我写的一个文件
它的开头是这样的
#include "depositor.h"
#include "math.h"
#include <string>
#include <iostream.h>
当我编译exp2时
出现下列错误
G:/VC Work/bank system/exp2.cpp(10) : error C2872: 'cout' : ambiguous symbol
G:/VC Work/bank system/exp2.cpp(10) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptable conver
sion)
求教,难道cout不能输出string类型吗?
另外,当我去掉“using namespace std;
”时
居然出现“G:/VC Work/bank system/exp2.cpp(7) : error C2065: 'string' : undeclared identifier”
的提示
这个“using namespace std;”什么用呀
请点拨;
谢谢各路高手!
 
是因为COUT的名字冲突。在iostream.h和iostream中都有定义cout.
而你有使std名字空间可见。所以两个文件里的相同名称的识标符都暴露在可见的名字空间里。
引起了ambiguous symbol(不确定的识标符)错误。
你把#include<iostream.h>那句删了或者在cout前面加上std::就可以解决这个问题
 
using namespace std 的作用是使iostream文件里的std名字空间可见。
所谓名字空间是指为了C++为了解决名字冲突而定义的一种容器。比如
namespace dsp
{
class array;
class list;
};
这样array和list就被隐藏在名字空间dsp中。使用时必须加上dsp::
如果你使用using namespace dsp就使dsp中的所有定义的识标符暴露在全局空间中。
一般要确定全局空间没有重名的对象才能这么做。
如你的程序中,因为string是定义在std中的,你如果不使用using namespace std。
编译器会看不到string。就会出现undeclared identifier(未定义)错误。
此时如果你在string前加上std::名字空间定位也可以解决问题。
但一般使用STL类库的时候。都是要暴露std。因为这样比较方便,不必每次都加std::
除非你自己写的类的名字和STL中的类名字冲突。
 
非常感谢kazema,可惜分太少了;看来这里的vc&amp;d高手还是蛮多的!
非常感谢jsxjd,可惜分太少了;
我的可用积分实在太少,请,原谅,原谅。
 
后退
顶部