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

进化中 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
//----------------------------------------------
...全文
178 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<....> 编译器 编译头文件时,发现漏写了分号,于是定位到系统头文件里面了!
经常使用电脑可能也遇到过了! 突然‘咚’的一声 提示 内存不能为read 这个问题我以前也遇到过不知道怎么解决 现在终于有办法了!呵呵! 我们就看看是什么原因引起的吧,另外附送一个小工具修复见下面附件 总结下大概以下9个原因 1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护(主要原因) 2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护 3、系统加载的程序或者系统正在运行的程序之前有冲突,尤其是部分杀毒软件监控程序 4、系统本身存在漏洞,导致容易受到网络攻击。 5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误…… 6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡)也有可能是 系统版本不够新或者不符合该游戏、显卡驱动 7、部分软件本身自身不足的问题 8、电脑硬件过热,也是导致内存不能为 Read 的原因之一。 9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因! 以上大概就是目前可以引起系统提示 内存不能为read的原因了 另外软件是针对只是针对部分原因引起的内存不为read所做修复,不是100%有效,大家可以试试看 说下原理: 就是批处理使用 regsvr32命令 将动态链接库文件重新注册 (system32下的所有 .dll 和 .ocx 文件;) 注意:由于修复工具会重新注册 system32下的所有 .dll 和 .ocx 文件 此操作对杀毒软件来说属于敏感操作,所以建议使用修复工具的时候,请禁用杀毒软件,以免部分杀毒误报!jie

65,209

社区成员

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

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