gug-bg-herd
[Top][All Lists]
Advanced

[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 и да си върши работата).

reply via email to

[Prev in Thread] Current Thread [Next in Thread]