Синтаксис си, как перевисти в масм?

Тема в разделе "WASM.BEGINNERS", создана пользователем SammIk, 3 янв 2007.

  1. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Переделываю заголовочный фаил, и от не знания си встрял.
    Не знаю как обьявить вот это:
    Код (Text):
    1. typedef BOOL (*TASKENUMPROC)(struct tasklist *, LPARAM);
    И еще вопрос. Звезда перед именем функции:
    Код (Text):
    1. API_EXPORT struct tasklist *GetTaskListPtr();
    Означает, что ф-я ссылку вернет???
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Звезда означает, что это указатель. Амперсанд - ссылка (в типах).

    По первому - это указатель на функцию. На асме можно просто указатель. Или в масме через typedef ptr как указатель на функцию с двумя аргументами.
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    SammIk
    Это используется для приведения указателя на функцию к определыенному прототипу. В масме это вообще не нужно обьявлять, хотя можно:
    TASKENUMPROC typedef PROTO :lol: WORD,:lol: WORD

    Функция вернёт нечто типа struct tasklist *, а что собой представляет struct tasklist *? - Это указатель на структуру tasklist.
     
  4. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Спасибо, за оперативность.
    Вот еще два вопроса возникло.
    .1 Что значит этот префикс Вот еще один вопрос возник?
    Код (Text):
    1. API_EXPORT void EnumTasks (TASKENUMPROC lpEnumFunc, LPARAM lParam);
    Вроде бы весь блок в .h с обьявлениями ф-ий взят в extern "C" { }.
    Или же этот префикс ничего не значит, типа void.

    .2
    Вот сдесь:
    Код (Text):
    1. enum { BB_DM_TOP, BB_DM_BOTTOM, BB_DM_LEFT, BB_DM_RIGHT, BB_DM_REFRESH = -1 };
    Перечисление будет начинаться с нуля, а последнее будет -1. Или же более хитро?
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Скорее всего, это просто __stdcall, но более точно можно узнать только посмотрев в заголовочные файлы. К примеру, в старом PSDK этой API_EXPORT вообще нет.

    Да, всё так просто.
     
  6. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Вот заголовочный файлик
     
  7. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    Ну если __BBCORE__ определен, то API_EXPORT - это __declspec(dllexport), иначе это просто пустая строка.