69,373
社区成员
发帖
与我相关
我的任务
分享
/* This file was automatically generated from syscalls.in 17.2 */
#ifndef __MESSAGE__H
#define __MESSAGE__H
#include <csrtypes.h>
/*! @file message_.h @brief Message types */
/*!
Message identifier type.
*/
typedef uint16 MessageId;
/*!
Message delay type.
*/
typedef uint32 Delay;
/*!
Message type.
*/
typedef const void *Message;
/*!
Task type.
*/
typedef struct TaskData *Task;
/*!
TaskData type.
*/
typedef struct TaskData { void (*handler)(Task, MessageId, Message); } TaskData;
#endif
struct s {char c;}; //DECL
void f (void)
{
typedef struct s * ps;
struct s {float f;};
}
虚心一点,不是谁都愿意指出你的错误。
[/quote]
如果注释掉DECL ps使用的是float f的结构,不注释则是上边char c的结构,学习了,不过还是不太懂typedef的时候到底是如何寻找结构s的,是优先向前找,如果前面没有再向后找吗?struct s {char c;}; //DECL
void f (void)
{
typedef struct s * ps;
struct s {float f;};
}
虚心一点,不是谁都愿意指出你的错误。
[/quote]
我想你误解我意思了,我只是说可以这样写而已
你给的例子在f函数中有没定义效果当然是不同的,或许你给的例子更有说服力
函数f中的ps表示的是struct s {float f;}指针,而不是全局中在前面的那个
typedef优先在所在的名字空间下寻找,而且也仅在同名称空间中可见的范围内有效[/quote]
不,typedef没有优先在当前块内寻找的说法。
就上例而言,pf的类型并不是指向struct s {float f;}的指针,而是指向struct s {char c;}的指针。[/quote]
是的,我 这句说错了struct s {char c;}; //DECL
void f (void)
{
typedef struct s * ps;
struct s {float f;};
}
虚心一点,不是谁都愿意指出你的错误。
[/quote]
我想你误解我意思了,我只是说可以这样写而已
你给的例子在f函数中有没定义效果当然是不同的,或许你给的例子更有说服力
函数f中的ps表示的是struct s {float f;}指针,而不是全局中在前面的那个
typedef优先在所在的名字空间下寻找,而且也仅在同名称空间中可见的范围内有效[/quote]
不,typedef没有优先在当前块内寻找的说法。
就上例而言,pf的类型并不是指向struct s {float f;}的指针,而是指向struct s {char c;}的指针。struct s {char c;}; //DECL
void f (void)
{
typedef struct s * ps;
struct s {float f;};
}
struct s {char c;}; //DECL
void f (void)
{
typedef struct s * ps;
struct s {float f;};
}
虚心一点,不是谁都愿意指出你的错误。
typedef struct TaskData { void (*handler)(struct TaskData*, MessageId, Message); } TaskData;
typedef struct A* Task;
struct A
{
};