Re[8]: Сравнение компиляторов
От: gbt Россия  
Дата: 26.07.05 11:03
Оценка:
Hello, Cyberax, you wrote:

> А можно что-нибудь посущественнее найти, чем поведение одного

> _НЕСТАНДАРТНОГО_ макроса?
Существенным здесь было определение двух одноименных переменных i в циклах for в
одном блоке:

>
> void foo()
> {
>   char *val = __FUNC__;
>   for(int i = 0; *val; i++)
>   {
>      *val ^= i; 
>   }
>   for(int i = 0; *val; i++)
>   {
>      *val ^= i; 
>   }
> }
>


--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[9]: Сравнение компиляторов
От: AndrewJD США  
Дата: 26.07.05 11:10
Оценка:
Здравствуйте, gbt, Вы писали:

>> А можно что-нибудь посущественнее найти, чем поведение одного

>> _НЕСТАНДАРТНОГО_ макроса?
gbt>Существенным здесь было определение двух одноименных переменных i в циклах for в
gbt>одном блоке:

Насколько я помню, когда были первые версии VC стандарт еще жестко не определял видимость переменных внутри блока.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[9]: Сравнение компиляторов
От: Cyberax Марс  
Дата: 26.07.05 11:21
Оценка: 1 (1)
gbt wrote:

>> А можно что-нибудь посущественнее найти, чем поведение одного

>> _НЕСТАНДАРТНОГО_ макроса?
> Существенным здесь было определение двух одноименных переменных i в
> циклах for в
> одном блоке

#define for if(0);else for

И будет вам счастье....

Это не было ошибкой в 98 году, так как Стандарта тогда еще тоже не было.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Сравнение компиляторов
От: gbt Россия  
Дата: 26.07.05 11:28
Оценка:
Hello, AndrewJD, you wrote:

> Насколько я помню, когда были первые версии VC стандарт еще жестко не

> определял видимость переменных внутри блока.
Читаем

C++ Standard Noncompliance Issues with Visual C++ 6.0
ID: Q243451
...
Scope of variable declared in the for loop initialization (6.5.3) not as per standard.
Q167748 PRB: Variable Scope in for-statement Extends Beyond Loop...


SYMPTOMS
If you declare the same variable in two different for-statements, the following error may appear:

Test.cpp(4) : error C2374: 'i' : redefinition; multiple initialization

CAUSE
The scope of a variable declared in the initialization part of a "for" loop is given local scope, as if it had been declared immediately prior to the for-statement



--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[11]: Сравнение компиляторов
От: Cyberax Марс  
Дата: 26.07.05 11:43
Оценка:
gbt wrote:

>> Насколько я помню, когда были первые версии VC стандарт еще жестко не

>> определял видимость переменных внутри блока.
> Читаем
> *C++ Standard Noncompliance Issues with Visual C++ 6.0*

Еще раз: когда VC6 разрабатывался — Стандарта еще _НЕ_ _БЫЛО_. Более
того, Стандарт появился только через полгода после релиза VC6. Для
Стандарта 92 года поведение VC6 — правильно. Ну и это неправильное
поведение фиксится простым макросом.

Найдите, наконец-то, настоящие недостатки, а не мелкие придирки.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[12]: Сравнение компиляторов
От: WolfHound  
Дата: 26.07.05 13:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Читаем

>> *C++ Standard Noncompliance Issues with Visual C++ 6.0*
C>Еще раз: когда VC6 разрабатывался — Стандарта еще _НЕ_ _БЫЛО_.
К томуже лично мне важнее стабильность back-end'а ибо странности front-end'а вылавливаются на этапе компиляции, а вот глюки кодогенератора которые к томуже еще и зависят от фазы луны куда страшнее.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Сравнение компиляторов
От: espider Россия  
Дата: 26.07.05 23:36
Оценка:
а теперь в пользу bcb6:
yна уровне линкера реализована отложенная загрузка dll, чего не нашел в vc6 .
Posted via RSDN NNTP Server 1.9
Re[8]: Сравнение компиляторов
От: Павел Кузнецов  
Дата: 27.07.05 00:04
Оценка:
espider,

> а теперь в пользу bcb6:

> yна уровне линкера реализована отложенная загрузка dll, чего не нашел в vc6 .

Мимо.

http://msdn.microsoft.com/library/en-us/vccore/html/vcconlinkersupportfordelayedloadingofdlls.asp

Beginning with Visual C++ 6.0, when statically linking with a DLL, the linker provides options to delay load the DLL until the program calls a function in that DLL.


Более того, подозреваю, что это в Борланде было "срисовано" с VC++6.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re: Сравнение компиляторов
От: c-smile Канада http://terrainformatica.com
Дата: 27.07.05 00:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>http://www.citforum.ru/programming/C_comp/


А>Есть анализы "посвежее" ?


В последнем номере CUJ как раз статья
http://www.cuj.com/documents/s=8188/cuj0507bruckschlegel/
Intel C++ / MS C++ / IBM Java / SUN Java / C# и Mono
Re[8]: Сравнение компиляторов
От: Whistler Россия Блог на GotDotNet.ru
Дата: 27.07.05 05:08
Оценка:
Здравствуйте, espider, Вы писали:

>> Здравствуйте, espider, Вы писали:

>>
>>
>> E>в VC7 откомпилил
>>
>> зачем мне VC2222 если сравнение идет про конкретные среды vc6 И bcb6
>>
>> выйдет BCB.NET в ноябре тогда и сравнивать надо.
E>Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально .

То что в BCB нельзя откомпилировать файл размером размером не более 3кб — это хлубокая чушь и не знание вопроса.
Я не фанат билдера и реально не считаю его лучше того же VC, но я за честность и объективность.
Обкакивать — это не красиво.

E>Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)?

E>P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6

Раз понел по стопам, значит инженеры Borland были правы, сделав передачу через стек.
Re[12]: Сравнение компиляторов
От: Аноним  
Дата: 27.07.05 05:26
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Найдите, наконец-то, настоящие недостатки, а не мелкие придирки.


Любой чих с шаблонами

#include <iostream>

template<int i> void f() { std::cout << i << std::endl; }

int main( int argc, char* argv[] )
{
  f<1>();
  f<2>();
  return 0;
}


На выходе

2
2
Re[9]: Сравнение компиляторов
От: espider Россия  
Дата: 27.07.05 13:32
Оценка:
> E>Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально .
>
> То что в BCB нельзя откомпилировать файл размером размером не более 3кб — это хлубокая чушь и не знание вопроса.
> Я не фанат билдера и реально не считаю его лучше того же VC, но я за честность и объективность.
> Обкакивать — это не красиво.

Мда... Не знание вопроса скорее с вашей стороны. Даже если вы и соберете бесполезную пустышку в bcb6 ее размер будет около 7к (минимум что смог получить), НО это с привязкой к динамик RTL (cc3260.dll) рамером ~1.5Mb!!! Если же собирать без RTL (в статике), то она автоматом линкуется к модулю и тут уж рзмер менее 50к вы неполучите. Речь идет о поддержке компилятором сборки без RTL вообще как в статике так и динамике, т.е. только WIN API и ничего лишнего.

> E>Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)?

> E>P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6
>
> Раз понел по стопам, значит инженеры Borland были правы, сделав передачу через стек.
Внимательней надо читать ветку. Выше меня уже поправили — в VC this передается через ECX, и ето так, проверено!
Posted via RSDN NNTP Server 1.9
Re[13]: Сравнение компиляторов
От: Cyberax Марс  
Дата: 27.07.05 13:49
Оценка:
wrote:

> На выходе

>
>2
>2
>
1
2

Что я делаю не так? Компилятор vc6+sp4.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[14]: Сравнение компиляторов
От: Аноним  
Дата: 27.07.05 14:46
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>
C>1
C>2
C>

C>Что я делаю не так? Компилятор vc6+sp4.

У меня vc6+sp5. Debug/Release без разницы. Пустой консольный Win32 проект. Все опции по умолчанию. Добавляю один файл main.cpp
2
2

Подобное было не только у меня. Ещё по крайней мере у двоих знакомых повторялось.
Re[15]: Сравнение компиляторов
От: CreatorCray  
Дата: 28.07.05 05:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У меня vc6+sp5. Debug/Release без разницы. Пустой консольный Win32 проект. Все опции по умолчанию. Добавляю один файл main.cpp


Аналогичен до безобразия... Но все же:

1
2
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Сравнение компиляторов
От: Cyberax Марс  
Дата: 28.07.05 06:15
Оценка:
wrote:

> C>Что я делаю не так? Компилятор vc6+sp4.

> У меня vc6+sp5. Debug/Release без разницы. Пустой консольный Win32
> проект. Все опции по умолчанию. Добавляю один файл main.cpp
>
>2
>2
>
> Подобное было не только у меня. Ещё по крайней мере у двоих знакомых
> повторялось.

sp5 я ставить не хочу, так что тестировать негде.

А вообще, насчет темплейтов лучше бы поклонники Borland'а молчали в
тряпочку — в Борланде нет даже friend-темплейтов. А уж багов в
реализации шаблонов вообще куча — поищите в коде Boost'а по слову BORLAND.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.