marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1526回复:5

我定义了个结构体类型却不能用来定义指针???

楼主#
更多 发布于:2004-04-20 16:53
我用typedef在头文件定义了一个结构体类型,可是在源文件中用这个结构体类型来定义一个指向结构体的指针时,ddk却告诉我illegal use of this type as an expression,这是为什么呀,大侠帮帮忙,我实在不知道在哪里出了问题了
附代码:
头文件:
typedef struct _PPPOE_TAG {
unsigned short    TAG_TYPE;
unsigned short TAG_LENGTH;
unsigned char TAG_VALUE;

} PPPOE_TAG;
源程序:
PPPOE_TAG *tag;

可是居然编译不过,大虾可以指点一下吗,谢谢了
marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-20 19:31
我知道问题在哪里了,
呵呵,首先声明我是C语言的菜鸟,原来都是写C++的,因为写驱动才看了点C:)
我的错误代码是这样的:
DbgPrint(\"generate a packet\\n\");
NDIS_STATUS status=NULL;
PPPOE_PACKET *packet=NULL;
殊不知,C的标准语法是应该将声明变量放在每个函数的开头
我这个相当于先执行了一个指令,然后才开始声明变量,所以就出错了
正确的写法应该是这样:
NDIS_STATUS status=NULL;
PPPOE_PACKET *packet=NULL;
DbgPrint(\"enter AllocatePacket\\n\");

其实,C++没有这么麻烦的,唉,嘿嘿,有劳大家了,让大家笑话了:)
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-20 17:26
typedef struct _PPPOE_TAG {
unsigned short TAG_TYPE;
unsigned short TAG_LENGTH;
unsigned char TAG_VALUE;

} PPPOE_TAG,*P_PPPOE_TAG;
源程序:
P_PPPOE_TAG tag;
ygmlq
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2014-11-07
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-20 17:15
把你的源程序用{...}括起来.
生死有命,富贵由天
marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-20 17:04
这个倒是有,这个我还是知道的
还有在源文件中,使用   NDIS_STATUS status;
它也说illegal use of this type as an expression啊,不解,NDIS_STATUS 不是在ndis.h里面定义的吗?
ljjlovernet
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2004-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-20 16:57
你的头文件没有被编译吧
我是来学习的。不打扫卫生
游客

返回顶部