2012-10-11 1 views
0

Je suis en train de construire un pilote sans fil qui est finalement échoué sur une erreur de déclaration implicite:erreur sur déclaration implicite, mais la fonction est déclarée dans le fichier source

wl_iw.c: In function 'wl_iw_set_priv': 
wl_iw.c:7649:4: error: implicit declaration of function 'wl_iw_set_cscan' [-Werror=implicit-function-declaration] 

est ici où il essaie d'appeler la fonction: Donc, il semble que cela ne sera appelé que si CSCAN est défini. Eh bien, dans le fichier source, wl_iw_set_cscan est également déclaré si CSCAN est déclaré (je crois). Here is where it is defined (github), et ... if you scroll up a little bit, it only seems to be dependent on CSCAN being defined.

CSCAN est certainement défini, ce qui est montré si je compilons bavard:

arm-linux-androideabi-gcc *snip* -DCSCAN *snip* -c -o /home/owner/android-wmon/core/compat-wireless-3.6-rc7-1/drivers/net/wireless/bcmdhd/wl_iw.o /home/owner/android-wmon/core/compat-wireless-3.6-rc7-1/drivers/net/wireless/bcmdhd/wl_iw.c 

je peux même être doublement sûr en mettant un « #define CSCAN » en haut de wl_iw.c et il sera se plaindre qu'il est défini deux fois. Je suis donc convaincu que CSCAN est défini.

Si c'est le cas, pourquoi est-ce que je reçois un avertissement de définition implicite transformé en erreur? wl_iw_set_cscan doit être défini car CSCAN est défini.

+5

Vérifiez la ligne 5781 –

+0

merci, c'était le problème. Si vous le posez comme une réponse, je l'accepterai. – gnychis

+1

L'exécution de votre fichier source via 'gcc -E' peut aider à trouver ce genre de problème; il montre la sortie du préprocesseur. –

Répondre

2

À la ligne 5781, il y a un autre #define qui masque wl_iw_set_cscan.

Questions connexes