Войти
ПрограммированиеФорумОбщее

С++ баг!! стандартный или MS-specific ? (6 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 5 6 7 Следующая »
#75
20:32, 9 фев. 2010

Дмитрий Ясенев
>!!GetAsyncKeyState(VK_SOMEKEY)
вы считаете, это в порядке вещей?


#76
20:37, 9 фев. 2010

Suslik
> вы считаете, это в порядке вещей?
в каком смысле?

этот warning может быть полезным, в случае если вы присвоили по ошибке не в ту переменную.
для избавления от него можно использовать приведённый вышевариант.
при выборе отключить warning или иметь в коде такого рода конструкции я выбираю конструкцию,
т.к. она не слишком громоздкая и всегда напоминает о преобразовании.

#77
20:43, 9 фев. 2010

Suslik
> >!!GetAsyncKeyState(VK_SOMEKEY)
> вы считаете, это в порядке вещей?
правильно так GetAsyncKeyState(VK_SOMEKEY) != 0

#78
23:49, 9 фев. 2010

Suslik
То есть вы серьёзно утверждаете, что это у компилятора руки кривые?

#79
1:14, 10 фев. 2010

vonrims
> То есть вы серьёзно утверждаете, что это у компилятора руки кривые?
у его логгера ворнингов - да. у MSVC компилятора вообще достаточно косяков, которые можно оправдывать ссылками на древние стандарты. особенно в душу запали typename в шаблонных классах, без которых он выдаёт очень не интуитивно понятные ошибки. И ворнинги при ромбовидном наследовании а-ля inherited via dominance, когда у одного из родителей виртуальный метод не реализован, а у другого - реализован. Это ж фича, а он ворнинг генерит, ну что за дела.. Ещё припоминаются некоторые проблемы, когда я не был согласен с компилятором, класс, помеченный как __declspec(dllimport) пытался импортить все методы, даже утилитарные шаблонные методы, реализованные прямо в коде.
Я ни в коем случае не говорю, что cl.exe - плохой компилятор, нет. Просто у него есть неприятные особенности, обычно завязанные на ворнингах(я пишу без них, на w3), и подобных проблем нет на том же ICL.

#80
7:21, 10 фев. 2010

> warning Cxxxx: i'm a blondie and couldnt convert dword to bool, possible loss of stuff
  Аналогично:

int k = 5;
k *= 4.2;

#81
10:49, 10 фев. 2010

Zefick
конверт из инта в бул интуитивно очевиден: 0 - false, не 0 - true. конверт из действительного в целое не очевиден.

#82
11:06, 10 фев. 2010

Suslik
> конверт из действительного в целое не очевиден.
  Спросите любого школьника, он ответит, как перевести действительное в целое. А про bool вовсе неочевидно.

Suslik
> 0 - false, не 0 - true
  А может, наоборот, кто его знает (кроме нас). Например, удачно завершившаяся программа возвращает 0, неудачно - не ноль. Так может ноль это true.

#83
11:11, 10 фев. 2010

Zefick
> Спросите любого школьника, он ответит, как перевести действительное в целое. А
> про bool вовсе неочевидно.
я думал, программируют обычно программисты, а не школьники. для них это, вроде, очевидно.

#84
11:16, 10 фев. 2010

Suslik
  То есть то, что очевидно для школьника неочевидно для программиста? Ещё можно приводить кучу примров с функциями, которые возвращают 0 в удачи и не ноль в противном случае (strcmp).

#85
11:21, 10 фев. 2010

Suslik
А для чего, по-вашему, ворнинги вообще нужны?
Мне всегда казалось, чтоб предупредить о возможных граблях... или мне перекреститься?
Компилер пишет, что есть потенциальный косяк. Задача прогера либо полечить, либо проигнорить, но тогда нет претензий к компилятору.
Видеть в этом злые происки разработчиков MSVC несколько неразумно. Они написали анализатор кода, который пытается максимально помочь в написании надёжного кода. А если это не нужно, есть возможность выключить.

Suslik
> typename в шаблонных классах, без которых он выдаёт очень не интуитивно
> понятные ошибки
Вы на gcc компилировали такой код? При первом знакомстве с этим компилятором я очень долго втыкал что же от меня надо, учитывая, что ICC и MSVC всё поняли без typename. Да и про ряд других компиляторов можно порассказать подобных баек.

Suslik
> Ещё припоминаются некоторые проблемы, когда я не был согласен с компилятором,
> класс, помеченный как __declspec(dllimport) пытался импортить все методы, даже
> утилитарные шаблонные методы, реализованные прямо в коде.
Поправьте, если ошибаюсь, но так сделают все компиляторы.

Suslik
> Просто у него есть неприятные особенности, обычно завязанные на ворнингах(я
> пишу без них, на w3), и подобных проблем нет на том же ICL.
Для таких как вы, и сделан казуальный режим. Это же не баг... это фича :).

А что такое ICL?

#86
11:35, 10 фев. 2010

Zefick
> > конверт из действительного в целое не очевиден.
> Спросите любого школьника, он ответит, как перевести действительное в целое. А про bool вовсе неочевидно.
улыбнуло)
понаехало то школоты...

Все с варнингами в студии в порядке
они служат не как отметки где компилятор что-то не понимает, а просто как напоминанием программисту что в этом коде есть не логичность
к примеру приведение float в int, int в bool, компилятор видит это, и говорит программисту, правильно ли это, или тип у переменой не тот что нужен, ведь приведение типов не бесплатно, обычное предупреждение, решается явным приведением говоря компилю что дык все верно, он и отстанет, все в порядке вещей
Исправляя все ворненги можно гарантировать себе неполучение многих глупых ошибок

#87
11:43, 10 фев. 2010

ashujon
  Ололо. Мне, между прочим, в этом году дипром получать, так что реплики про школоту приберегите для кого-нибудь другого. А что вас так развеселило, я не понял.

#88
11:45, 10 фев. 2010

Zefick
> Suslik
>   То есть то, что очевидно для школьника неочевидно для программиста? Ещё можно
> приводить кучу примров с функциями, которые возвращают 0 в удачи и не ноль в
> противном случае (strcmp).
И причем здесь strcmp и ее соглашение о возвращаемом значении? То, как создатели сишных библиотек, определяют удачен ли вызов или нет, вовсе не должен значит, что 0 - это true. Всегда существовало мнение, что ноль - это отрицание, ложь. Вы перемешиваете мух с котлетами и пытаетесь еще что-то доказать.

#89
11:49, 10 фев. 2010

Zefick
> То есть то, что очевидно для школьника неочевидно для программиста? Ещё можно приводить кучу примров с функциями, которые возвращают 0 в удачи и не ноль в противном случае (strcmp).
А это тут вообще причем? функции вовзращащие число обычно возвращаемое значение интерпретируется как "код ошибки", где тут связь с bool'ом непонятна
Zefick
> Мне, между прочим, в этом году дипром получать
знал бы ты как о "многом" это говорит

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.