[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [debian] [avifile/C++] Молба за съ вет относно #564868: FTBFS with g
From: |
Yavor Doganov |
Subject: |
Re: [debian] [avifile/C++] Молба за съ вет относно #564868: FTBFS with gcc-4.5 |
Date: |
Thu, 14 Jan 2010 01:12:48 +0200 |
User-agent: |
Mutt/1.5.17+20080114 (2008-01-14) |
On Thu, Jan 14, 2010 at 12:31:59AM +0200, George Danchev wrote:
> > Не виждам нищо смущаващо в avm_output.h; сигурно нещо съществено ми
> > убягва?
>
> Имах предвид, че поне аз предпочитам да инициализирам статичните
> членове веднага след дефиницията на класа към който принадлежат;
Аха.
> Ами да, това потвърждава тезата, че сега с 4.5 невалидния код се
> диагностицира като грешка:
>
> Give helpful error for constructor name used as type.
По-скоро компилаторът не е знаел точно какво да диагностицира, понеже
подобни конструкции са двусмислени (аз поне така си го обяснявам).
> > 4.4 го приема за тип, 4.5 го приема за конструктор, а се очаква тип.
> >
> > Не може дефиницията да е просто
> >
> > AvmOutput* AvmOutput::m_pSelf = 0;
>
> Абсолютно законен код, приема се и от GCC 4.5.
(Имаш предвид "валиден" код. "Законен" е нещо съвсем друго, и поне в
проекта GNU силно се предпочита "(in)valid" пред "(il)legal" в такива
случаи.)
> Тип има защото вече имаме дефиниция на типа AvmOutput, вижда се вече
> на този етап защото се включва от хедъра #include "avm_output.h".
И аз така мислех, но и с двете версии (4.4 и 4.5) грешката е:
| common/avm_output.cpp:20:1: error: 'AvmOutput' does not name a type
> Незаконен C++ код е:
>
> AvmOutput::AvmOutput* AvmOutput::m_pSelf = 0;
Това се компилира с GCC <= 4.4 поне.
> > [*] http://gcc.gnu.org/ml/gcc-patches/2009-06/txt00006.txt
>
> Това е нещо ново за мен, и този пач премахва коментара:
> /* The `typename' keyword is only allowed in templates. */
Не само коментара, премахва ограничението изцяло.
> но това не доказва, че:
>
> typename AvmOutput::AvmOutput* AvmOutput::singleton()
> {}
>
> или:
>
> AvmOutput::AvmOutput* AvmOutput::m_pSelf = 0;
>
> е законен код с новия компилатор.
Не доказва и не твърдя, че доказва. Ще продължавам да се мъча да
открия естеството на проблема...
С други думи, според теб моето "лекарство" не лекува болестта, просто
я прикрива, така ли да разбирам?
> а аз не мисля, че е добра идея да си губиме времето със счупен код,
> при положение, че може да се инвестира в други по-добри свободни
> кодове.
Че avifile е счупен код -- не споря (може и да е и най-вероятно е), но
това е свободен софтуер, инак не бих губил и един миг от живота си
дори и да си помислям за него, камо ли да се ровя и да пиша до който и
да е списък. Алтернативите (AFAIK) са FFmpeg и GStreamer -- първото е
абсолютен гърч за мен, второто не е съвсем приемлива опция заради
зависимостта от GLib (и в двата случая аз ще трябва да реализирам
съответните "bundles" в cynthiune.app, така че предпочитам libavifile
да е bug-free и да си върши работата).