Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 12 May 24 13:25:46, всего сообщений: 8286
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 6982 из 8286 ========================================= RU.LINUX =
От   : Alexandr S. Agranovsky           2:5020/400         01 Jan 03 02:39:52
Кому : Valentin Nechayev                                   01 Jan 03 02:39:52
Тема : Re: Re: kernel compiling
FGHI : area://RU.LINUX?msgid=udmnet.ru+46655173
На   : area://RU.LINUX?msgid=iv.nn.kiev.ua+e5258c39
= Кодировка сообщения определена как: IBM866 =================================
==============================================================================
From: "Alexandr S. Agranovsky" <llb@udmnet.ru>



  Hi, Valentin Nechayev
VN>>  AC>>>   for (int i=0; i < 5; ++i){
VN>>  AC>>>     for (int i=0; i < 15; ++i){
ASA>> ...
VK>>>> происходит выход из внешнего цикла. Или здесь опечатка и во внутреннем цикле
VK>>>> используется переменная j?
ASA>> Соль в том, что после первого for имеем составной оператор {},

VN> Возражение шло на пример, где оптимизация убила внутренний цикл в 0.
мы говорим об оптимизации (было) или (уже) об различии
переменных внутри составных операторов?

ASA>> внутри которого можно заново определить переменную с тем же
ASA>> именем - но фактически это будет уже _другая_ переменная.
ASA>> Все согласно правилам Си и C++ (я скомипилил и проверил, как .c
ASA>> так и .cpp, с ключом -O0).

VN> Да??? Для Си это прокатывать никак не должно, что у меня и происходит:

VN> 20:21:21:netch@iv:~/tmp>gcc -c t.c
VN> t.c: In function `main':
VN> t.c:4: syntax error before `int'
VN> t.c:4: `i' undeclared (first use in this function)
VN> t.c:4: (Each undeclared identifier is reported only once
VN> t.c:4: for each function it appears in.)
VN> t.c:4: syntax error before `)'
VN> t.c:5: syntax error before `)'
VN> 20:21:27:netch@iv:~/tmp>gcc -v
VN> Using builtin specs.
VN> gcc version 2.95.4 20020320 [FreeBSD]

Я признаюсь в том, что малость подкорректировал программку (не
изменив сути определений по области видимости:
int sum;
int i;
for (i=0;i<5;i)
{
  int i;
  for (i=0;i<15;++i)
  {++sum;}
}

VN> А вот для C++ действительно может работать:

VN> 20:18:04:netch@iv:~/tmp>gcc -c -xc++ t.c
VN> 20:18:29:netch@iv:~/tmp>echo $?
VN> 0

VN> Так что я тебе рекомендую 1) тщательно проверить, что ты действительно
VN> компилировал это как программу на C, а не на C++,
Да, я компилировал именно как Си - в первый раз меня точно так
же обругали, тогда я вынес int i за пределы цикла и получил тот
же самый результат (75)

VN> 2) в этом случае назвать
VN> компилятор, чтобы я никогда им не пользовался ;))
;)
Я ошибку допустил - сразу не привел текст, который скормил
gcc'у - а он _действительно_ отличался (буквами, но не смыслом)

ASA>> Оптимизатор тут ни при чем.

VN> Ты точно потерял контекст. Вот максимум что я смог добиться от 2.95.4:

VN> main:
VN>         pushl %ebp
VN>         movl %esp,%ebp
VN>         xorl %eax,%eax
VN>         xorl %edx,%edx
VN>         .p2align 2,0x90
VN> .L6:
VN>         incl %edx
VN>         movl $14,%ecx
VN>         .p2align 2,0x90
VN> .L10:
VN>         incl %eax
VN>         decl %ecx
VN>         jns .L10
VN>         cmpl $4,%edx
VN>         jle .L6
VN>         movl %ebp,%esp
VN>         popl %ebp
VN>         ret
Да, я тоже получил подобный код от 2.95.2 из Debian 2.2

VN> А ICC оказался умнее, он сразу дал готовый результат.
С оптимизацией-то понятно, я хотел VK'у объяснить, что
переменные "i" в обоих циклах разные.

- ---
Alexandr S. Agranovsky llb@udmnet.ru


--- ifmail v.2.15dev5
* Origin: LLB, LLC (2:5020/400)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.057923 секунды