error: implicit declaration of function ‘pthread_mutexattr_settype’ 引出GNU_SOURCE探索

这两天在做64位移植的工作,在编译某组建时报错如下:

error: implicit declaration of function ‘pthread_mutexattr_settype’


造成这个错误的原因网上已经说得很明白了,就是由于没有添加所需要的头文件导致的,于是找到了函数pthread_mutexattr_settype的声明(在 <pthread.h> 文件中):

#ifdef __USE_UNIX98
/* Return in *KIND the mutex kind attribute in *ATTR.  */
extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind)
    __THROW;

/* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL,
   PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or
   PTHREAD_MUTEX_DEFAULT).  */
extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
    __THROW;

/* Return in *PROTOCOL the mutex protocol attribute in *ATTR.  */
extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: "error: implicit declaration of function" 的意思是“函数的隐式声明错误”。这通常是因为在使用函数之前没有正确地声明或包含函数的头文件。这可能会导致编译错误或未定义的行为。要解决此问题,您需要确保在使用函数之前正确地声明或包含函数的头文件。 ### 回答2: “error: implicit declaration of function”是一种编译错误,意味着在程序中调用了一个没有提前声明的函数。当编译器遇到未声明的函数时,它会自动创建一个默认的函数声明。但是,编译器可能无法正确推断函数的返回类型,参数数量和数据类型, 这将导致编译错误。 这个错误可以出现在不同的情况下,例如在以下情况下: 1.程序中未包含正确的头文件:要调用一个函数,必须包含与该函数相关的头文件,否则编译器会认为该函数未声明。 2.函数名的拼写错误:这是一种常见的错误,如果您拼错了函数名,编译器将不能识别该函数。 3.函数原型的错误:如果函数原型与函数定义不匹配,编译器将不能正确推断函数的类型和参数数量。 为了解决这个编译错误,可以尝试以下方法: 1.检查程序中是否包含了正确的头文件,特别是函数调用所需的头文件。 2.检查函数名是否正确拼写。 3.检查函数声明和定义的实参和形参是否匹配。 4.显式地声明该函数,即在函数之前添加一个声明。这将告诉编译器函数的类型和参数数量,从而避免错误。 总之,“error: implicit declaration of function”是一种常见的编译错误,它通常是由头文件缺失、函数名拼写错误或函数原型不匹配等问题导致的。解决这个问题的关键是仔细检查代码并确保正确声明所需的函数。 ### 回答3: 在C编程中,当我们使用一个函数却没有在代码中显式地声明它时,就会出现"error: implicit declaration of function"的错误。这通常会在我们使用自定义函数或库函数时发生。 在C语言中,所有的函数都必须在调用之前进行声明或定义。这是因为C编译器会在编译时检查函数声明或定义是否正确,以确保程序的逻辑正确性。如果没有声明函数,编译器将无法确定该函数的返回类型、参数类型、参数数量等信息。 因此,当我们在代码中没有明确声明函数时,编译器将会自动进行隐式声明,即在编译时自动为我们声明一个默认的返回类型为int且参数类型未知的函数。但是,这样的声明很可能与我们真正要使用的函数的声明不同,从而导致编译错误。 解决"error: implicit declaration of function"错误的方法是在代码中显式地声明该函数。我们可以通过在函数调用之前加上函数声明或将函数定义放在函数调用之前来解决这个问题。此外,在使用库函数时,我们也需要包含正确的头文件,以确保函数声明的正确性。 总之,"error: implicit declaration of function"错误是因为编译器不能通过代码中隐式声明的函数推断出正确的函数声明,需要我们显式地声明或定义函数来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值