是系统的错误还是我的错误

进化中 2013-04-07 02:14:56
我在用VS2010写一个程序时,编译之后发生了以下错误:

//--------------------------------------------------------
d:\program files\vs2010\vc\include\codeanalysis\sourceannotations.h(29): error C2144: 语法错误:“__w64 unsigned int”的前面应有“;”
//-----------------------------------------------------------------

标明位置在SourceAnnotations.h内:

//-----------------------------------------------
#ifndef _SIZE_T_DEFINED
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
typedef _W64 unsigned int size_t; //错误指向处
#endif
#define _SIZE_T_DEFINED
#endif
//------------------------------------------------------------------------

烦请各位给看看,这到底是什么原因?我的头文件是这么写的:

//-----------------------------------------
#ifndef HEADER_PPIONT
#define HEADER_PPIONT
class PPiont
{
double x,y;
public:
void set(double x, double y); //设置坐标
double xOffset(); //返回直角坐标分量x
double yOffset(); //返回直角坐标分量y
double angle(); //返回极坐标分量相位
double radius(); //返回极坐标分量幅值
};
#endif
//----------------------------------------------
...全文
163 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-04-28
  • 打赏
  • 举报
回复
引用 3 楼 derekrose 的回复:
[quote=引用 1 楼 lm_whales 的回复:] 你自己的代码漏写了分号“;”后者大括号"}"; 然后#include<....> 编译器 编译头文件时,发现漏写了分号,于是定位到系统头文件里面了!
可是为什么定位到这一句 typedef _W64 unsigned int size_t; [/quote] 编译器发现没有分号,会继续查找,直到找到分号。 因为类型定义可以附带定义变量; 比如 struct point2d { int x,y; } //这个位置少写分号,并不是错误 lefttop ={10,20}; //连这个分号也没有写才是错误! 所以就把错误定位到,头文件的第一个分号前面了。
进化中 2013-04-07
  • 打赏
  • 举报
回复
谢谢一楼和二楼,问题解决。是我太粗心了,对于三楼,我也有同样的问题,我的理解是可能系统找不到“;”时就以为是头文件的定义发生错误,因此找到了SourceAnnotations.h。但不知道具体原因是不是这样
titer1 2013-04-07
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
这个看起来是叫 排除 技能啊!!
赵4老师 2013-04-07
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
derekrose 2013-04-07
  • 打赏
  • 举报
回复
引用 1 楼 lm_whales 的回复:
你自己的代码漏写了分号“;”后者大括号"}"; 然后#include<....> 编译器 编译头文件时,发现漏写了分号,于是定位到系统头文件里面了!
可是为什么定位到这一句 typedef _W64 unsigned int size_t;
plum2003 2013-04-07
  • 打赏
  • 举报
回复
你是直接从IDE里拷贝出来的代码?那很明显,类名后面的分号写成全角的了..
//-----------------------------------------
 #ifndef HEADER_PPIONT
 #define HEADER_PPIONT
 class PPiont
 {
 double x,y;
 public:
 void set(double x, double y);          //设置坐标
double xOffset();                      //返回直角坐标分量x
 double yOffset();                      //返回直角坐标分量y
 double angle();                        //返回极坐标分量相位
double radius();                       //返回极坐标分量幅值
 };//这个分号你写成全角的了
 #endif
 //----------------------------------------------
lm_whales 2013-04-07
  • 打赏
  • 举报
回复
你自己的代码漏写了分号“;”后者大括号"}"; 然后#include<....> 编译器 编译头文件时,发现漏写了分号,于是定位到系统头文件里面了!

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧