當我使用__attribute__ ((weak))
就像在this post我收到來自gcc關於重新聲明符號的警告,而我所做的只是添加一個屬性。該屬性可以不同地附加?我得到這個樣子的警告:使用__attribute__((弱))會導致警告「xxx多餘的重新聲明」,以任何方式避免?
threads.c:53: warning: redundant redeclaration of ‘pthread_once’
/usr/include/pthread.h:478: note: previous declaration of ‘pthread_once’ was here
您是否在threads.c中聲明瞭自己的pthread_once版本? – hirschhornsalz 2011-05-09 10:32:13
是的,我做了(爲了添加屬性) #ifdef __GNUC__ #ifdef linux #if(__GNUC__ == 3 && __GNUC_MINOR__> = 3)|| (__GNUC__> 3) extern int pthread_once(pthread_once_t * __ once_control, void(* __ init_routine)(void)) \t __attribute((weak)); ... – ensonic 2011-05-09 10:36:01
然後,你不能#include,因爲你聲明瞭兩次函數。您可以製作pthread.h的副本,在那裏更改pthread_once的聲明並將其包含在內。 –
hirschhornsalz
2011-05-09 10:54:21