C или C++

Тема в разделе "WASM.BEGINNERS", создана пользователем Igi, 23 окт 2007.

  1. Igi

    Igi New Member

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

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Igi
    Лучше, на чем умеешь лучше.
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    ИМХО

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

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

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Тогда вопрос - при переводе исходников с С в С++ приходится во многих местах явно указывать приведение типов:

    PCHAR char1
    PVOID void1

    void1 = (PCHAR)char1

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

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А он и не ругается. Ни С, ни С++. Может, ты имеешь ввиду char1 = void1? Тогда никак не отключить, это разные типы.
     
  6. Igi

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Сейчас у меня компилятор ругается на такой код:

    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

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Просто кто-то не умеет их готовить ;)
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тыб еще спросил почему ULONG к поинтерам приравнивать нельзя. это же разные типы данных.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Igi
    Совет: оставайся в асме, там тебе будет проще :)
     
  10. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    /offtop:
    Понравилось описание различий про С и С++
    http://www.insidecpp.ru/art/1/
     
  11. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Какой-то падонак-style, а не статья.
    ж))))))))
     
  12. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Это блог - как хочет, так и пишет :)