首页
社区
课程
招聘
[旧帖] [求助]头文件包含的顺序不同,引起不同结果 0.00雪花
发表于: 2013-6-20 11:15 1650

[旧帖] [求助]头文件包含的顺序不同,引起不同结果 0.00雪花

2013-6-20 11:15
1650
环境win7 64位,VC6.0

/****************************ioctl_test.h*************************/
#define IOCTL_TEST1 CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x800,METHOD_BUFFERED,FILE_ANY_ACCESS)
/**************************************************************/

顺序1:
#include "stdafx.h"
#include <windows.h>
#include "ioctl_test.h"
这样可以编译通过

顺序2:
#include "stdafx.h"
#include "ioctl_test.h"
#include <windows.h>
这样则会出现一大堆的错误
E:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\winioctl.h(179) : error C2146: syntax error : missing ';' before identifier 'DeviceType'
E:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\winioctl.h(179) : error C2501: 'DWORD' : missing storage-class or type specifiers
E:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\winioctl.h(179) : error C2501: 'DeviceType' : missing storage-class or type specifiers
E:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\winioctl.h(185) : error C2146: syntax error : missing ';' before identifier 'DeviceNumber'
E:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\winioctl.h(185) : error C2501: 'DWORD' : missing storage-class or type specifier
.............

顺序3:
#include "ioctl_test.h"
#include "stdafx.h"
#include <windows.h>
这样则会出现未定义的错误
error C2065: 'IOCTL_TEST1' : undeclared identifier

但是不知为何
求大神解答

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
头文件ioctl_test.h中一些东西定义在windows.h和stdafx.h里边的头文件中.
一般vs需要预编译头文件只能把#include "stdafx.h"放在最前边,
系统的头文件比如#include <windows.h> #include <tchar.h>放在中间
你自己定义的头文件#include "ioctl_test.h"放在最后.
当然你也可以直接在ioctl_test.h文件里边的头部写上#include "stdafx.h" #include <windows.h>等等
2013-6-20 14:23
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
虽然还是不懂什么原因,但是还是O(∩_∩)O谢谢咯
2013-6-20 22:59
0
游客
登录 | 注册 方可回帖
返回