nobody0
10-07-2005, 23:56
Mit Code, den ich im User-Space und auch auf Mikrocontrollern (freestandig) seit längerem verwende, mußte ich leider feststellen, daß ihn nur dann in ein Modul integrieren kann, wenn ich kein typedef struct verwende (weil das "error: syntax error before '*' token" gibt), indem ich entsprechend kapsele:
# ifndef __KERNEL__
typedef struct
# else
struct Clock
# endif // __KERNEL__
{
u16 u16_yday; // 1..366 days since 1.1. +1, redundant
u8 uc_second; // 0..61 (ink. leap seconds)
u8 uc_minute; // 0..59
u8 uc_hour; // 0..23
u8 uc_day; // 1..31
u8 uc_day_of_week; // 1..7, redundant
u8 uc_month; // 1..12
u8 uc_kweek; // 1..53, redundant
u8 uc_year; // 0..68, with Offset 2000
u8 uc_moonphase; // 0..29, redundant
s8 sc_timezone; // offset to UTC in hours
_Bool b_summertime; // true, false; for localtime_has_summertime
}
# ifndef __KERNEL__
T_s_clock;
# else
;
# endif // __KERNEL__
# ifdef __KERNEL__
# define T_s_clock struct Clock
# endif // __KERNEL__
Das funktioniert zwar, ist aber lästig und bläht den Code auf.
Gibt's denn keinen Trick mit dem man auch im Kernel Space ein typedef struct verwenden kann? :confused:
# ifndef __KERNEL__
typedef struct
# else
struct Clock
# endif // __KERNEL__
{
u16 u16_yday; // 1..366 days since 1.1. +1, redundant
u8 uc_second; // 0..61 (ink. leap seconds)
u8 uc_minute; // 0..59
u8 uc_hour; // 0..23
u8 uc_day; // 1..31
u8 uc_day_of_week; // 1..7, redundant
u8 uc_month; // 1..12
u8 uc_kweek; // 1..53, redundant
u8 uc_year; // 0..68, with Offset 2000
u8 uc_moonphase; // 0..29, redundant
s8 sc_timezone; // offset to UTC in hours
_Bool b_summertime; // true, false; for localtime_has_summertime
}
# ifndef __KERNEL__
T_s_clock;
# else
;
# endif // __KERNEL__
# ifdef __KERNEL__
# define T_s_clock struct Clock
# endif // __KERNEL__
Das funktioniert zwar, ist aber lästig und bläht den Code auf.
Gibt's denn keinen Trick mit dem man auch im Kernel Space ein typedef struct verwenden kann? :confused: