语法错误 : 缺少“;”(在标识符“ContextRecord”的前面)

一个简单的问题:

头文件为:

#include <iostream>
#include "stdlib.h"
#include <math.h>
#include <windef.h>
#include <winbase.h>

编译后产生如下错误:

d:\program files\microsoft visual studio\vc98\include\winnt.h(3143) : error C2146: syntax error : missing ';' before identifier 'ContextRecord'

d:\program files\microsoft visual studio\vc98\include\winnt.h(3143) : error C2501: 'PCONTEXT' : missing storage-class or type specifiers
d:\program files\microsoft visual studio\vc98\include\winnt.h(3143) : error C2501: 'ContextRecord' : missing storage-class or type specifiers
d:\program files\microsoft visual studio\vc98\include\winbase.h(715) : error C2146: syntax error : missing ';' before identifier 'LPCONTEXT'

d:\program files\microsoft visual studio\vc98\include\winbase.h(715) : fatal error C1004: unexpected end of file found

这里的是因为PCONTEXT未得到定义,而且错误产生在windef.h和winbase.h中,且打开头文件没有发现人为改动产生的错误。


修改:

第一次尝试将winbase.h放到windef.h之前,结果产生更多错误,因此类型符的定义不在这两个文件中。

因此想到是不是缺少头文件的问题,于是在iostream的下面加上加上了不同的头文件,发现windows.h的时候编译可以通过,由此可知windows.h中定义winbase.h和windef.h的一些东西。

(这里如果将windows.h放到winbase.h的下面,错误又会出现)

于是查了一下windows.h,可以看到:

WINDOWS.H是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:
WINDEF.H 基本数据类型定义。
WINNT.H 支持Unicode的类型定义。
WINBASE.H Kernel(内核)函数。
WINUSER.H 用户界面函数。
WINGDI.H 图形设备接口函数
因此在后面用到这些头文件时,需要以windows.h为开始。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值