我正在尝试构建我的代码库,但我收到了错误
构建时生成的c文件中的"错误:数字常量之前的预期标识符"
,行号指rw_offsetof(struct __pthread_mutex_s,1),
sizeof( pthread_attr_t ),
sizeof(((pthread_attr_t *)RW_UE_NULL)->__size ),
sizeof( struct __pthread_internal_slist ),
rw_offsetof( struct __pthread_internal_slist, __next ),
sizeof( struct __pthread_mutex_s ),
rw_offsetof( struct __pthread_mutex_s, __lock ),
rw_offsetof( struct __pthread_mutex_s, __count ),
rw_offsetof( struct __pthread_mutex_s, __owner ),
rw_offsetof( struct __pthread_mutex_s, __kind ),
rw_offsetof( struct __pthread_mutex_s, __nusers ),
rw_offsetof( struct __pthread_mutex_s, 1 ),
sizeof( pthread_mutex_t ),
sizeof(((pthread_mutex_t *)RW_UE_NULL)->__size ),
sizeof( pthread_mutexattr_t ),
sizeof(((pthread_mutexattr_t *)RW_UE_NULL)->__size ),
sizeof( pthread_cond_t ),
sizeof(((pthread_cond_t *)RW_UE_NULL)->__size ),
sizeof( pthread_condattr_t ),
sizeof(((pthread_condattr_t *)RW_UE_NULL)->__size ),
sizeof( sem_t ),
sizeof(((sem_t *)RW_UE_NULL)->__size ),
我发现__pthread_mutex_s是在pthreadtypes.h中定义的
typedef union
{
struct __pthread_mutex_s
{
int __lock;
unsigned int __count;
int __owner;
int __kind;
unsigned int __nusers;
__extension__ union
{
int __spins;
__pthread_slist_t __list;
};
} __data;
char __size[__SIZEOF_PTHREAD_MUTEX_T];
long int __align;
} pthread_mutex_t;
因为这是系统文件,这怎么会导致问题?
答案 0 :(得分:1)
rw_offsetof
的第二个参数应该是第一个参数中命名的struct中字段的名称。第1367行中的用法看起来是正确的,但在第1368行中,你有文字常量1
而不是字段的名称,因此错误。
如果没有更多的上下文,很难说出这个错误是如何发生的,但我最好的猜测是你有一个预处理器宏,其名称与__pthread_mutex_s
中的字段同名(例如{{ 1}}或__count
),此宏为__list
d为#define
。