Q_DECL_EXPORT int main(int argc, char **argv)
Что означает это Q_DECL_EXPORT
до int main(...)
?
Q_DECL_EXPORT int main(int argc, char **argv)
Что означает это Q_DECL_EXPORT
до int main(...)
?
Отрывок из Документов 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()
скорее всего не является частью библиотеки.
Это не ключевое слово, а его макрос, чтобы инкапсулировать разные ключевые слова для компилятора, чтобы объявить функцию как exported
.
См. также Q_DECL_EXPORT
и Создание общих библиотек.
Обычно он используется с библиотеками для определения тех функций, которые необходимо экспортировать из библиотеки, для их импорта ( "используется" ) другими библиотеками или исполняемыми файлами.
Я не видел этого с функцией main
до сих пор, но это может быть черная вещь. С другой стороны, этот учебник не использует макрос с функцией main()
, поэтому его можно, вероятно, удалить.