C语言中结构体定义时初始化问题
原先的定义:
static struct _rec_spin_lock {
spinlock_t spl_lock;
unsigned long flags;
} rec_spin_lock = {SPIN_LOCK_UNLOCKED,0};
由于内核版本的变动,SPIN_LOCK_UNLOCKED不再被定义,用新的DEFINE_SPINLOCK(x) 取代。
DEFINE_SPINLOCK(x) 的定义如下:
#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
请问,这种情况下,如何在定义时初始化这个结构体的值呢?
static struct _rec_spin_lock {
spinlock_t spl_lock;
unsigned long flags;
} rec_spin_lock = {DEFINE_SPINLOCK,0};
这样肯定报错。
c struct
[解决办法]
static struct _rec_spin_lock {
spinlock_t spl_lock;
unsigned long flags;
} rec_spin_lock = {__SPIN_LOCK_UNLOCKED(0),0};