C или C++

Discussion in 'WASM.BEGINNERS' started by Igi, Oct 23, 2007.

  1. Igi

    Igi New Member

    Blog Posts:
    0
    Здравствуйте. У меня вопрос, на чем лучше писать драйвера. Поставил Студию 2005, собрал пример из солдатова - все нормально. Но многие примеры в интернете написаны на C... и приходится много ковырять чтобы заставить из работать. Так что же лучше?
     
  2. crypto

    crypto Active Member

    Blog Posts:
    0
    Igi
    Лучше, на чем умеешь лучше.
     
  3. katrus

    katrus New Member

    Blog Posts:
    0
    ИМХО

    На "конвенциональном" c++ драйвер писать неудобно, так как у тебя не runtime c++, т.е., по умолчанию нет операторов new, delete (впрочем их легко определить самому), нет stl (и прикрутить его нетривиально) и т.д.

    Я при написании драйверов использую с++ как "супер" с - можно объявлять переменные где захочется, расширенная функциональность макро, и прочие добавки с++. Классами не пользуюсь вовсе, даже не могу объяснить почему, но при написании драйверов они ненужны и неудобны. Это при том, что в user space не могу пукнуть, не породив несколько классов.
     
  4. Igi

    Igi New Member

    Blog Posts:
    0
    Тогда вопрос - при переводе исходников с С в С++ приходится во многих местах явно указывать приведение типов:

    PCHAR char1
    PVOID void1

    void1 = (PCHAR)char1

    можно ли как-то настроить чтобы на void1 = char1 компилятор не ругался?
     
  5. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    А он и не ругается. Ни С, ни С++. Может, ты имеешь ввиду char1 = void1? Тогда никак не отключить, это разные типы.
     
  6. Igi

    Igi New Member

    Blog Posts:
    0
    Сейчас у меня компилятор ругается на такой код:

    PLONG pLong1;
    PCHAR pChar1;
    pChar1 = pLong1;

    error C2440: '=' : cannot convert from 'PLONG' to 'PCHAR'
    1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

    Почему не присваивает? Это ведь по сути просто указатели, обычные DWORDы...

    Блин, только что проверил - и в C такое не работает :dntknw:
     
  7. censored

    censored New Member

    Blog Posts:
    0
    Просто кто-то не умеет их готовить ;)
     
  8. n0name

    n0name New Member

    Blog Posts:
    0
    тыб еще спросил почему ULONG к поинтерам приравнивать нельзя. это же разные типы данных.
     
  9. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Igi
    Совет: оставайся в асме, там тебе будет проще :)
     
  10. nester7

    nester7 New Member

    Blog Posts:
    0
    /offtop:
    Понравилось описание различий про С и С++
    http://www.insidecpp.ru/art/1/
     
  11. censored

    censored New Member

    Blog Posts:
    0
    Какой-то падонак-style, а не статья.
    ж))))))))
     
  12. nester7

    nester7 New Member

    Blog Posts:
    0
    Это блог - как хочет, так и пишет :)