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 :
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);
}
"intentional_compiler_warning", très mal trouvé comme nom de fonction, c'est plutôt "function_for_annoy_peoples", sans être vulgaire.
Donc comment on fait pour résoudre ce bug... intentionné? (Ils sont vraiment sadiques, les devs de libburn.)