J'ai compilé un programme utilisant libburn mais une erreur de compilation assez simple à reconnaître surgit :
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /Applications/Xcode.app/Contents/Developer/usr/bin/make all-am if gcc -DHAVE_CONFIG_H -I. -I. -I. -I./libburn -I./libisofs -I./libisoburn -I./xorriso -DDEBUG -g -pedantic -Wall -Wextra -Wno-unused-parameter -Wno-char-subscripts -g -O2 -MT libburn/xorriso_xorriso-sg.o -MD -MP -MF "libburn/.deps/xorriso_xorriso-sg.Tpo" -c -o libburn/xorriso_xorriso-sg.o `test -f 'libburn/sg.c' || echo './'`libburn/sg.c; \ then mv -f "libburn/.deps/xorriso_xorriso-sg.Tpo" "libburn/.deps/xorriso_xorriso-sg.Po"; else rm -f "libburn/.deps/xorriso_xorriso-sg.Tpo"; exit 1; fi libburn/sg.c:77:6: error: redefinition of 'Cannot_recognize_GNU_Linux_nor_FreeBSD_nor_Solaris_nor_NetBSD_' int Cannot_recognize_GNU_Linux_nor_FreeBSD_nor_Solaris_nor_NetBSD_; ^ libburn/sg.c:73:6: note: previous definition is here int Cannot_recognize_GNU_Linux_nor_FreeBSD_nor_Solaris_nor_NetBSD_; ^ 1 error generated. make[1]: *** [libburn/xorriso_xorriso-sg.o] Error 1 make: *** [all] Error 2
Pour faire simple : une variable a été définie plusieurs fois (le compilateur n'est pas assez intelligent pour transformer les définitions en changements de valeurs tout bête, on se demande bien pourquoi). La variable a un nom bizzare aussi, comme si une erreur en cachait une autre :
"Cannot recognize GNU/Linux nor FreeBSD nor Solaris nor NetBSD"
Le code est dans la libburn, donc c'est libburn qui me fait une blague. Une vraie, parceque l'erreur vient de là en fait :
"intentional_compiler_warning", très mal trouvé comme nom de fonction, c'est plutôt "function_for_annoy_peoples", sans être vulgaire.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 static int intentional_compiler_warning(void) { int INTENTIONAL_COMPILER_WARNING_; int Cannot_recognize_GNU_Linux_nor_FreeBSD_nor_Solaris_nor_NetBSD_; int Have_to_use_dummy_MMC_transport_adapter_; int This_libburn_will_not_be_able_to_operate_on_real_CD_drives; int Have_to_use_dummy_MMC_transport_adapter; int Cannot_recognize_GNU_Linux_nor_FreeBSD_nor_Solaris_nor_NetBSD_; int INTENTIONAL_COMPILER_WARNING; return(0); }
Donc comment on fait pour résoudre ce bug... intentionné? (Ils sont vraiment sadiques, les devs de libburn.)
Partager