阅读:1526回复:5
我定义了个结构体类型却不能用来定义指针???
我用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; 可是居然编译不过,大虾可以指点一下吗,谢谢了 |
|
沙发#
发布于: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++没有这么麻烦的,唉,嘿嘿,有劳大家了,让大家笑话了:) |
|
板凳#
发布于: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; |
|
地板#
发布于:2004-04-20 17:15
把你的源程序用{...}括起来.
|
|
|
地下室#
发布于:2004-04-20 17:04
这个倒是有,这个我还是知道的
还有在源文件中,使用 NDIS_STATUS status; 它也说illegal use of this type as an expression啊,不解,NDIS_STATUS 不是在ndis.h里面定义的吗? |
|
5楼#
发布于:2004-04-20 16:57
你的头文件没有被编译吧
|
|
|