In <Pine.SGI.4.05.9809291844240.799-100000@fly.macomnet.ru> Sergey Vovk (vsv@macomnet.ru) wrote:
SV> On Mon, 28 Sep 1998, Alex Tutubalin wrote:
>> Привет,
>>
>> alr> Недавно компилировал Apache 1.3.1 (кажется :-) ) PL 25.10
>> alr> на RS/6000 AIX 4.2.1, и он не скомпилировался :-(
>> alr> Компилятор: CC, лицензионный
>> alr> Правится в одном из *.h apache: функция * const *
>> alr> заменяется на * без const * в двух местах.
>> alr> Если интересно, можно подробнее.
>> Это функции имеют отношение к Russian Apache ? Тогда давайте подробнее личной
>> почтой. Если же это родные апачные функции, то http://bugs.apache.org
>> или что-то в этом духе.
Без толку. Они четко и однозначно дали понять: для компиляции apache нужно
применять компилятор ANSI C. Если проблема в том, что "лицензионный" компилятор
не знает про const. Если же там проблемы с несовпадением параметров функций,
тогда да, тогда это имеет смысл...
SV> Пилюля(на уровне идеи)
SV> В Makefile, или в Configuration:
SV> CC = cc -Dconst
Да, должно помочь... Хотя если у вас компилятор не с языка C, а неизвестно с
чего (какого $%^$%^& он const не понимает???), то все может быть :-))
SV> Эти происки в mod_charset были откушены года потора назад,
И недавно их опять туда вернули :-)) Чтобы не нервировать warning'ами тех, у
кого компилятор с языка C, а не с чего-нибудь еще.
SV> а что в apache-team писатели те еще - факт.
В Apache-Team пишут на ANSI C. И компилируется он БЕЗДНОЙ компилиторов на
разный Sun'ах, HP, Cray'ях (я не издеваюсь :-) и т.п.
SV> Они под gcc пишут,
Они НЕ пишут под gcc. Они пишут под ANSI C -- хорошо определенный,
документированный язык, а не под чьи-то поделки, которые не имеют const или
описания прототипов функций. Надоело. 10 лет -- достаточный срок, чтобы
можно было отказаться от поддержки pre-ANSI C компиляторов...
SV> и с другой стороны (глубокое IMHO) - то, что современный gcc
SV> (например 2.7.2.*) понимает как язык C, таковым не является. ;))))
Называть это стрье (gcc 2.7.2.*) СОВРЕМЕННЫМ ???? Вы что -- издеваетесь ???
Современный gcc -- это egcs 1.1b или на худой конец gcc 2.8.1, но уж никак не
gcc 2.7.2.* !!! Конечно C в них мало отличается, но вот C++ в egcs 1.1b начал
чуть-чуть напоминать что-то похожее на C++ (ну что это за C++ в gcc 2.7.2.*
без фундаментальных вещей типа exception'ов, namespace'ов и параметров умолчания
в шаблонах?). Что касается C, так gcc (в режиме -ansi, само собой) является
одной из наиболее ортодоксальных реализаций C. Например я не умею с помощью
ключей компиляции добиться того, чтобы приведенная ниже программа,
скомпилированная MS VC++ выдавала бы 1, а не 2 :-)
Программа:
-- cut --
#include <stdio.h>
int f(int a, int b) {
return a//**/b
;
}
main() {
const x=f(2,2);
printf ("%d\n",x);
}
-- cut --
Если эта программа вашим компилятором не компилируется или выдает 2 вместо 1,
то вы имеете дело НЕ с комилятором с языка C, а с компилятором с его
надмножества или подмножества в лучшем случае... Конечно даже если программа
выдает 1, то это еще не значит, что вы имеете дело с языком C...
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.