Отключить проверку типов переменных в MVC++ 6.0

Тема в разделе "WASM.ZEN", создана пользователем cpp_and_wasm, 28 янв 2007.

  1. cpp_and_wasm

    cpp_and_wasm Владимир

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    128
    Каким образом можно это сделать?
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    cpp_and_wasm
    Зачем это тебе? Цель?
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    cpp_and_wasm

    отключить нельзя. обойти можно.
    сейчас скажу как
     
  4. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ну обычно при несоответствии типов выдается варнинг и если не стоит опция
    трактовать варнинг как ошибку то это не влияет на процесс компиляции,
    вобще варнинги лучше не отключать а писать "прямой" код
     
  6. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Я бы так сделал)))
    А с union реально красиво... надо где-нибудь попробовать...
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Asterix
    это смотря какое несоотвествие типпов.
    некоторые приведения типов вполне законны как в си, так и в си++,
    некоторые только в си, а некоторые и без варнинга выдают ошибку
    даже в си, несмотря на всю его "демократию"

    "прямой" код писать просто невозможно, поскольку при стыковке
    разных библиотек друг с другом или с API вылезает "несовместимость"
    типов, хотя на самом деле они совместимы, просто по разному объявлены.

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


    Proteus
    твой вариант _намного_ быстрее моего, тут я не спорю.
    но по опыту, явная провека через strlen спасает от кучи проблем,
    поскольку более наглядна и в ней труднее ошибиться.
    и это относится не только к моему коду. очень часто,
    там где я встречал "оптимизацю" были ошибки переполнения ;(

    а безымянные объявления - хороший способ писать листинги
    "write only", попытка чтения которых вызывает переполнение
    серего вещества и съезд крыши ;)
     
  8. cpp_and_wasm

    cpp_and_wasm Владимир

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    128
    Нет. Просто от всех этих типов скоро голова лопнет. Почему, блин, мелкомягким надо было "плодить" разные типы, ведь вполне хватает, например: stdcall, unsigned long, short и т.д.???
     
  9. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cpp_and_wasm
    Мелкомягкие-то тут причем? Претензии такого типа следует адресовать AT&T вообще и товарищам Кернигану, Риччи и Страуструпу в частности :)
    А вообще-то две основные причины - совместимость и эффективность.
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ustus
    Ну, просто они для винды ввели "свои типы", смотри в мсдн «Windows Data Types». Хотя, cpp_and_wasm, это ещё мелочи - повезло, что typedef всего лишь объявляет псевдоним, а не новый тип - иначе пришлось бы совсем туго :)
     
  11. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    :)
    Вспомнился Турбо Паскакаль, для которого:
    Код (Text):
    1. type
    2.   arr = array[1..10] of integer;
    3. var
    4.   a, b : arr;
    5.   c, d : array[1..10] of integer;
    6.   e : array[1..10] of integer;
    7.   f : arr;
    a, b, f - одного типа
    с, d - одного типа
    a, c, e - трех разных типов :)
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Хм.. А в чём там разница между c и e?

    А вообще, там есть и 'typealias', и 'typedef' - то есть, как простой псевдоним, так и объявление нового типа.

    -- спутал
     
  13. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    IceStudent
    c и d как раз одного типа. В отличии от e - я даже когда Си еще не знал - меня это убивало - ну почему, почему?!!
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ustus
    Я опечатался. а и с - ещё понятно, а с и е?
     
  15. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    IceStudent
    А вот хрен его знает. Но считается, что разные объявление одинаковых массивов представляют разные типы. В Си есть что-то подобное - неименованые структуры, например:
    Код (Text):
    1. struct { int x; } a, b;
    2. struct { int x; } c;
    здесь a и b - одного типа, а c - другого. Так что, в принципе, определенная логика здесь есть. :)
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ясно.
     
  17. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Кстати если он девятый....
    где остальные почитать?
     
  18. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    С этими типами все понятно.

    Вы же знаете, что программу на машинные коды переводит машина :). А так как для каждого объявленого типа создается свой внутренний идентификатор, но само описание типов не сравнивается, то вы и получаете такую кашу.

    С одной стороны можно сказать что это дурня, с другой это доппроверки для компилятора на отлов тараканов.
     
  19. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    stdcall это не тип, а соглашение о вызове функции.
     
  20. cpp_and_wasm

    cpp_and_wasm Владимир

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    128
    А LCC поддаётся отключению проверки типов?