Значение ключевого слова Q_DECL_EXPORT

Q_DECL_EXPORT int main(int argc, char **argv)

Что делает это Q_DECL_EXPORT до int main(...) средства?

15

Решение

Выдержка из QT документы:

В зависимости от вашей целевой платформы Qt предоставляет специальные макросы, которые
содержать необходимые определения:

  • Q_DECL_EXPORT должен быть добавлен к объявлениям символов, используемых при компиляции разделяемой библиотеки.
  • Q_DECL_IMPORT должен быть добавлен в объявления символов, используемых при компиляции клиента, который использует общую библиотеку.

Я не проверял код QT, но, скорее всего, этот макрос будет делать следующее:

#ifdef _WIN32 || _WIN64
#define Q_DECL_EXPORT __declspec(dllexport)
#define Q_DECL_IMPORT __declspec(dllimport)
#else
#define Q_DECL_EXPORT
#define Q_DECL_IMPORT
#endif

__declspec(dllimport) а также __declspec(dllexport) говорит компоновщику импортировать и экспортировать (соответственно) символ из или в DLL. Это специфично для Windows.

В вашем конкретном случае этот макрос, вероятно, может быть удален, так как main() скорее всего, не является частью библиотеки.

18

Другие решения

Это не ключевое слово, это макрос для инкапсуляции различных специфических для компилятора ключевых слов для объявления функции как exported,

Смотрите также Q_DECL_EXPORT а также Создание общих библиотек.

Обычно он используется с библиотеками для определения тех функций, которые необходимо экспортировать из библиотеки, чтобы импортировать («использовать») другие библиотеки или исполняемые файлы.

Я не видел это с main пока что функционируют, но это может быть чем-то особенным для ежевики. С другой стороны, это руководство не использует макрос с main() Функция либо, так что, вероятно, может быть удалена.

6

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector