Martin Michlmayr пересобрал 6200 пакетов Debian свежим компилятором GCC 4.1. При этом было обнаружено более 500 новых багов, из которых 2/3 приходятся на типичные ошибки с С++-коде.
ffmpeg-0.4.8 3 года программе нет, на gcc 4.1 уже не собирается
kde 3.5.1 почти свежая на gcc 4.1 уже не собирается
avidemux-2.0.32 год проекту на gcc 4.1 уже не собирается
ntp-4.1.1 4 года проекту на gcc 4.1 уже не собирается
Просто взял свой архив и попытался собрать с gcc 4.1. Каждый второй проект не собирается. А архив не такой старый. Свой древний диск с линуксом 1994-го года сейчас достать не могу, но абсолютно уверен, что с него не соберётся ничего.
http://prdownloads.sourceforge.net/ffmpeg/ffmpeg-0.4.8.tar.gz
./configure
make
In file included from avcodec.h:14,
from common.c:27:
common.h:66: error: array type has incomplete element type
common.h:70: error: array type has incomplete element type
> =8-O А причем тут stdio.h? Я там не замечал и намека на ООП...
А что такое FILE*, если не объект с простейшей объектной моделью (не подкрепленной синтаксисом, без наследования и пр. - но, например, с инкапсуляцией)?
1. С99 - относительно свежий стандарт (судя по поддержке компиляторами)
2. Стандарты ISO - только часть развития языка. Некие вехи, обобщающие накопленный опыт. А само развитие непрерывно (и да, у каждого компилятора свое, в общем случае).
>А что такое FILE*, если не объект с простейшей объектной моделью (не подкрепленной синтаксисом, без наследования и пр. - но, например, с инкапсуляцией)?
мы уже объяснили всё г-ну AsphyX'у в linux-talks@c.j.r :)
Да сколько угодно. diald, publicfile. В районе RH9 что-то поменяли в errno, ругаются на него. Что точно я уже не помню, но к diald когда-то писал патч. ;-)
>Языки НЕ развиваются. Последним версиям стандартов ISO на С и С++ уже многов времени. А вот пингвиньи компиляторы почему-то развиваются.
А Вы, батенька, назовите хотябы один компилятор (кроме Comeau), который бы удовлетворял этим последним стандартам. К стати компиляторы от MS исторически по этому показятелю в заднице. Ситуация начала выправлятся 3 года назад, когда они пригласили на работу Sutter'а, хотя до сих пор даже VC8 по этому показателю отсасывает у gcc.
> Да сколько угодно. diald, publicfile. В районе RH9 что-то поменяли в errno, ругаются на него. Что точно я уже не помню, но к diald когда-то писал патч. ;-)
Насчет ругани на errno - это скорее всего к libc, а не к компилятору
Ну и? Правильно, по-моему, что не компилируется, хотя там и есть слово external, но все равно. То есть тут довольно очевидно, в чем проблема и еще более очевидна, если сказать gcc3, чтобы он не скрывал от общественности то, что ему не по душе. Напиши патч, исправляющий ошибку в коде, там все довольно просто.
fasm - не знаю, а tasm - там ООП только что заявлена. Ни одного из "трёх китов" - ни полиморфизма, ни наследования, ни инкапсуляции. Доступ к полям "объектов" через точку - это ещё не ООП :)