kika: (Default)
kika ([personal profile] kika) wrote2008-10-28 09:28 pm
Entry tags:

Ищется рубанок, который не стреляет тебе в ногу в процессе строгания

Казалось бы, простой критерий, а вот поди ж ты.

Кароче, ищется замена gcc. Интересуют в первую очередь платформы Linux и MacOS/X, но и другие приветствуются. Слава богу, под виндой есть достаточно профессиональный компилятор, и не обязательно пользоваться этой пластмассовой игрушкой.

Кому надо объяснений "почему" - то все очень просто: заебал. Терминально заебал. Настолько что я рад, что мне вряд ли предстоит встретить того волосатого мудилу, который породил это уебище. Иначе я бы точно загремел в тюрьму.

Главное, что если б микрософт так наблевал бы на рынок, то его бы обкладывали хуями в каждом втором мейллисте. А тут - все нормально, все спокойны. Опенсорс же, Free Software Foundation, свобода, равенство, братство и процветание.

[identity profile] calcin.livejournal.com 2008-10-29 07:12 am (UTC)(link)
Ссылочку, пожалуйста, на тот набор багов, который заебал.
Интересно же.

[identity profile] kika.livejournal.com 2008-10-29 08:09 am (UTC)(link)
А без ссылочки заебать не может? Не вел я списка, хотя после каждого раза думал: "ну все теперь, пора список составлять".
В этот раз 4 часа ушло на (упрощено, но не сильно)

FILE *bar::foo(char *path, error *err)
{
FILE *f;

if(!make_abs_path(path))
return FS_INVALID_HANDLE;
....
f = fopen(m_abs_path, m_mode);
if(FS_OK(f))
*err = FS_NO_ERROR;
else
*err = FS_ERROR;
}

[identity profile] cmm.livejournal.com 2008-10-29 10:37 am (UTC)(link)
ну, это.
человеческих C++-компиляторов в природе не бывает, потому как невозможно.
а C gcc компилирует вполне себе нормально.

[identity profile] kika.livejournal.com 2008-10-29 07:46 pm (UTC)(link)
С чистым C несколько месяцев назад была ровно та же самая ошибка. Тоже стоила чуть ли не целый рабочий день в сумме.

[identity profile] cmm.livejournal.com 2008-10-29 08:35 pm (UTC)(link)
однако!
при Столлмане gcc такого себе не позволял.

[identity profile] pzz.livejournal.com 2008-10-30 12:30 am (UTC)(link)
В Си они это дело починили где-то в районе четверки. Наверное, в пятерке починят в C++ :-)

[identity profile] rblaze.livejournal.com 2008-10-29 11:25 am (UTC)(link)
А для идиотов -- что было не так?

Код странный, ошибку возвращает то через return value, то через параметр. Но вроде без криминала.

[identity profile] kika.livejournal.com 2008-10-29 07:42 pm (UTC)(link)
Ты вообще на С-то программируешь? Там десяток строк, как можно не увидеть в чем проблема?
Намек: компилятор на этом коде молчит.

[identity profile] rblaze.livejournal.com 2008-10-29 10:29 pm (UTC)(link)
А, значение не возвращается. Ну я ж говорю, странный по дизайну код: двойной возврат ошибки до добра не доводит, с компилятором или без.

[identity profile] kika.livejournal.com 2008-10-29 11:03 pm (UTC)(link)
Двойной возврат ошибки есть везде. Например возврат != 0 и установка errno, здесь функционально тоже самое.
Это не повод вернуть из функции мусор.

[identity profile] rblaze.livejournal.com 2008-10-30 07:11 am (UTC)(link)
Не повод, конечно. Проблему компилятора не отрицаю, но вот именно то, что написано -- это жизнь в поисках неприятностей. Установить err наверху тоже забыли, например, и это уже на компилятор не спишешь.

[identity profile] kika.livejournal.com 2008-10-30 07:17 am (UTC)(link)
Я ж не целиком код привел. Код грязный, я не спорю, человека этого добрым словом уже не раз помянули.

[identity profile] isysoev.livejournal.com 2008-10-31 01:16 pm (UTC)(link)
А -W -Wall не пробовал ? Даже gcc 2.8 на такое говорит:
warning: control reaches end of non-void function