powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] QT-заголовок -- это единица трансляции.
33 сообщений из 33, показаны все 2 страниц
[QT] QT-заголовок -- это единица трансляции.
    #39444188
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот не знал.

Заголовочный файл (.h) с QT-классами в QT-проекте тоже является единицей трансляции, а не только исходный файл (.cpp)
Происходит это из-за того, что заголовочные файлы преобразуются MOC-компилятором в исходные файлы и тоже полноценно транслируются.

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

----
Читал хинты оракла. Много думал...
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444192
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Нет, хедеры -- это хедеры, а не единицы трансляции.
То, что ты добавляешь в список HEADERS, парсится сначала qmake'ом на предмет объявления QObject'ов, а затем уже создаются цели в виде файлов moc_<header_name>.cpp для реализации сигнал-слотового механизма и метаобъекта для данного класса(ов). Эти цели выполняет moc, которому скармливают на вход хедер, дефайны.Также эти цели сразу участвуют в компиляции объектных файлов moc_<header_name>.o, которые затем линкуются в бинарь. Именно поэтому вызовы сигналов (с emit, или без), напрямую идут в соответсвующие moc_<header_name>.cpp в дебаге.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444247
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддержу MasterZiv'а

С традиционно точки зрения, "единица трансляции" это то, что превращается компилятором в объектный файл.
Однако, более общее определение: "минимальный блок исходного текста, который физически можно оттранслировать". Без уточнения оттранслировать во что конкретно...

С другой стороны, если вспомнить о существовании "прекомилированных заголовков", то заголовочные файлы неожиданно превращаются в "единицу трансляции" даже в формальном С (или С++).

Ну а так-как MOC делает трансляцию (.+).h в moc_$1.h и moc_$1.cpp, то получается что файлы перечисленные в HEADERS это действительно "единицы трансляции".
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444262
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то единица трансляции -- это объектный модуль, в рамках которого
формируются объекты, помещаемые в словарь внешних имён

формируются ссылки на другие объекты из словаря внешних имён.

В этом смысле заголовочный файл QT -- самая настоящая единица трансляции.
Так что не надо ля-ля :-)
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444751
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Не согласен. Единица трансляции -- это термин, используемый в рамках конкретного компилятора.

Взято с русскоязычной Википедии.
White Owl Однако, более общее определение: "минимальный блок исходного текста, который физически можно оттранслировать". Без уточнения оттранслировать во что конкретно...

А вот что говорит стандарт C++
C++ standard rev N4140 2014-11-19A source file
together with all the headers (17.6.1.2) and source files included (16.2) via the preprocessing directive
#include, less any source lines skipped by any of the conditional inclusion (16.1) preprocessing directives, is
called a translation unit. [ Note: A C ++ program need not all be translated at the same time. — end note ]


Но, если, так сказать, посмотреть более широко, то можно назвать это translation unit'ом с точки зрения системы сборки.
Так сказать, одно имя в разных неймспейсах. Но, кому нужно вность эту путаницу?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444912
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZА вот что говорит стандарт C++
C++ standard rev N4140 2014-11-19A source file
together with all the headers (17.6.1.2) and source files included (16.2) via the preprocessing directive
#include, less any source lines skipped by any of the conditional inclusion (16.1) preprocessing directives, is
called a translation unit. [ Note: A C ++ program need not all be translated at the same time. — end note ]




С этой точки зрения заголовок QT -- тоже единица трансляции.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444934
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv[
С этой точки зрения заголовок QT -- тоже единица трансляции.
Ни разу. В данной формулировке на первом месте идёт "source file", который является корнем для translation unit'а, в который включаются остальные файлы путём директив #include.
В случае Qt хедэра, он вообще логически "оторван" от соответсвующего moc_$1.cpp файла и не удовлетворяет требованию "source file". Это moc_$1.cpp является translation unit'ом, так как инклудит хедэр и имплементит часть его функциональности.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444945
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZMasterZiv[
С этой точки зрения заголовок QT -- тоже единица трансляции.
Ни разу. В данной формулировке на первом месте идёт "source file", который является корнем для translation unit'а, в который включаются остальные файлы путём директив #include.
В случае Qt хедэра, он вообще логически "оторван" от соответсвующего moc_$1.cpp файла и не удовлетворяет требованию "source file". Это moc_$1.cpp является translation unit'ом, так как инклудит хедэр и имплементит часть его функциональности.
Что значит "оторван"??? Это просто много-шаговая компиляция.
А вообще странно, автогенерацией исходников мы занимаеся уже черти-сколько лет. Некоторые языки вообще не компилируются напрямую а выдают код на Си, который уже и отдается в gcc. OCaml и Haskell например. И что ты назовешь единицей трансляции там?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444951
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЧто значит "оторван"??? Это просто много-шаговая компиляция.
А вообще странно, автогенерацией исходников мы занимаеся уже черти-сколько лет. Некоторые языки вообще не компилируются напрямую а выдают код на Си, который уже и отдается в gcc. OCaml и Haskell например. И что ты назовешь единицей трансляции там?
Предыдущее утверждение базируется строго на основе стандарта C++, мы о нём и говорим сейчас.
Оторван -- значит, что Qt-хедер ничего не знает про moc_$1.cpp (в нём нет директивы #include <moc_$1.cpp>, так?), соответственно, с точки зрения стандарта C++, он не является компилируемой единицей, он не подаётся на вход компилятору. УСЁ!
В проект можно понапихать ещё кучу генерённых файлов (из XML в CPP, например), но называть их единицами трансляции -- придумывание никому ненужной терминологии и внесение путаницы. Даже в той же Википедии так написано. Натягивать давно устоявшиеся термины на реальность не нужно.

Вопрос к ТС'у, откуда вообще инфа, или это просто ИМХО?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39444990
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZПредыдущее утверждение базируется строго на основе стандарта C++, мы о нём и говорим сейчас.
Оторван -- значит, что Qt-хедер ничего не знает про moc_$1.cpp (в нём нет директивы #include <moc_$1.cpp>, так?),эээ... а когда это заголовочный файл знал о .cpp файлах??? Или если уж на то пошло, то с чего вдруг .cpp файл должен знать о полученном из него .o файле???
NekZ соответственно, с точки зрения стандарта C++, он не является компилируемой единицей, он не подаётся на вход компилятору. УСЁ!Еще раз напоминаю, что заголовочные файлы могут быть "прекомпилированы", и результат прекомпиляции это вполне себе объектный файл.

NekZВ проект можно понапихать ещё кучу генерённых файлов (из XML в CPP, например), но называть их единицами трансляции -- придумывание никому ненужной терминологии и внесение путаницы. Даже в той же Википедии так написано. Натягивать давно устоявшиеся термины на реальность не нужно.Генерированные файлы, это генерированные файлы. А вот то из чего они сгенерированны и факт что исходники прошли через процесс генерации по отдельности и делает эти исходные файлы единицами трансляции.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445112
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlкомпилятору. УСЁ!Еще раз напоминаю, что заголовочные файлы могут быть "прекомпилированы", и результат прекомпиляции это вполне себе объектный файл.[/quot]

Сомневаюсь очень сильно.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445157
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlэээ... а когда это заголовочный файл знал о .cpp файлах??? Или если уж на то пошло, то с чего вдруг .cpp файл должен знать о полученном из него .o файле???

Мне опять процитировать стандарт? .cpp удовлетворяет понятию "a source file", который оказывается в результате translation unit'ом, в то время как Qt-хедэр не является таковым, т.к. не подаётся на вход компилятору, не является корневым файлом компиляции.

White OwlГенерированные файлы, это генерированные файлы. А вот то из чего они сгенерированны и факт что исходники прошли через процесс генерации по отдельности и делает эти исходные файлы единицами трансляции.
Так ещё раз, откуда инфа? Я держусь в рамках стандарта C++ и там понятие единицы трансляции оговорено строго, ничего не написано про сгенерённые исходники.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445271
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlГенерированные файлы, это генерированные файлы. А вот то из чего они сгенерированны и факт что исходники прошли через процесс генерации по отдельности и делает эти исходные файлы единицами трансляции.
Если удариться в крайность, то давай представим, что .cpp файлы генерируются на основе окружения, такое ведь может быть. Так что, теперь считать окружение единицей трансляции?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445748
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZWhite OwlГенерированные файлы, это генерированные файлы. А вот то из чего они сгенерированны и факт что исходники прошли через процесс генерации по отдельности и делает эти исходные файлы единицами трансляции.
Если удариться в крайность, то давай представим, что .cpp файлы генерируются на основе окружения, такое ведь может быть. Так что, теперь считать окружение единицей трансляции?То что подается на вход компилятору.


И кстати, если внимательно читать тот кусок стандарта который ты процитировал, то все что включается через #include так же входит в определение.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445761
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТо что подается на вход компилятору.

Да, Qt-хедеры не подаются на вход компилятору напрямую. Компилятор лишь видить moc_$1.cpp файлы и внутри них инклуды Qt-хедеров, как и кучи других хедеров, если они там есть. Но это не даёт право теперь именовать все хедеры единицами трансляции.

White OwlИ кстати, если внимательно читать тот кусок стандарта который ты процитировал, то все что включается через #include так же входит в определение.

C++ StandardA source file together with all the headers (17.6.1.2) and source files included (16.2) via the preprocessing directive #include, less any source lines skipped by any of the conditional inclusion (16.1) preprocessing directives, is called a translation unit.

Свой надмозгИсходный файл в совокупности со всеми заголовочными и исходными файлами, включёнными через препроцессорную директиву #include , за исключением строк, пропущенных из-за препроцессорных директив, называется единицей трансляции.

То есть, получается, что любые хедеры не являются единицами трансляции, так как в корне этого определения стоит исходный файл , в котором много-много хедеров, включенных через #include .

Qt-хедеры тут -- ни пришей, ни пристегни.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39445784
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ,

Думай как хочешь...

Но помни, что: "как вы яхту назовете, так она и поплывет".
И перечитай первый пост этого топика. Как минимум один человек имел проблемы от того что не достаточно точно называл свою яхту.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446176
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZТо есть, получается, что любые хедеры не являются единицами трансляции, так как в корне этого определения стоит исходный файл , в котором много-много хедеров, включенных через #include .

Qt-хедеры тут -- ни пришей, ни пристегни.

ЛЮБЫЕ хедеры НЕ ЯВЛЯЮТСЯ.
QT-шные хедеры, поскольку по ним генерируется код -- ЯВЛЯЮТСЯ.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446252
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛЮБЫЕ хедеры НЕ ЯВЛЯЮТСЯ.
QT-шные хедеры, поскольку по ним генерируется код -- ЯВЛЯЮТСЯ.
Ещё раз, как бывший инженер инженеру. Представь крайний случай, что код генерируется на основании окружения ОС или на основе фазы луны из данных обсерватории.
Теперь, окружение ОС и фаза луны теперь тоже являются единицами трансляции?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446271
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZMasterZivЛЮБЫЕ хедеры НЕ ЯВЛЯЮТСЯ.
QT-шные хедеры, поскольку по ним генерируется код -- ЯВЛЯЮТСЯ.
Ещё раз, как бывший инженер инженеру. Представь крайний случай, что код генерируется на основании окружения ОС или на основе фазы луны из данных обсерватории.
Теперь, окружение ОС и фаза луны теперь тоже являются единицами трансляции?Если они проходят через процесс отдельной компиляции, то да являются.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446289
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЕсли они проходят через процесс отдельной компиляции, то да являются.
Откуда информация?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446697
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZMasterZivЛЮБЫЕ хедеры НЕ ЯВЛЯЮТСЯ.
QT-шные хедеры, поскольку по ним генерируется код -- ЯВЛЯЮТСЯ.
Ещё раз, как бывший инженер инженеру. Представь крайний случай, что код генерируется на основании окружения ОС или на основе фазы луны из данных обсерватории.
Теперь, окружение ОС и фаза луны теперь тоже являются единицами трансляции?


ДА!

И знаешь, почему? Все просто!
Ты указываешь в своем проекте эти "фазы луны" - и у тебя есть неразрешенные внешние ссылки. Не указываешь с и их НЕТ!

Проблема-то с чего началась? Мне нужно было испытать некоторые классы, другие классы проекта им мешали. Соответственно, что мне нужно было бы сделать в обычном проекте, не QT? Выкинуть реализации (.cpp) ненужных классов из проекта на время. Выкидывать заголовки (.h) не обязательно, да во многих системах сборки заголовки и вообще не указываются в принципе никогда в проектах.
Заголовки, если они правильно оформлены, не могут формировать новые элементы в словарь внешних символов, не добавляют глобальные переменные и функции. Заголовки всегда вторичны.

А в QT -проектах это не так, заголовки самостоятельно компилируются и они формируют новые символы в словарь внешних символов. Из них даже наверное можно собрать работающую программу, вообще без единого .cpp!
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446698
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы еще проще объяснить, совсем по-тупому ...

чтобы убрать класс из проекта, нужно выкинуть все ссылки на него, все его использование, выкинуть все включения его заголовков, и убрать из проекта его файл- реализации (.cpp).
В QT-проекте надо выкинуть из проекта также И ФАЙЛ ЗАГОЛОВКА КЛАССА. Иначе класс останется в программе.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446792
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Ты часто оперируешь словом "проект" в своих объяснениях. Однако, в рамках стандарта нет такого понятия. Но, это может быть либо qmake-проект, либо CMake-проект, либо SCons-проект, либо M$VS-проект, либо Makefile, либо тупо скрипт. Как в рамках каждого случая "выкинуть" Qt-хедер? Правильно, единообразного способа нет, везде по-разному.

А если я, например, уже имею Qt-хедер от какой-нибудь 3rd party библиотеки вместе со статической либой, в которой лежат объектные файлы moc и объектник к самому хедеру и которая линкуется в целевой бинарь и в рамках моего "проекта" её можно отключить "по щелчку пальцев" чтобы её символы не добавлялись в бинарь, то она является единицей трансляции?

Мне кажется, тут можно продолжать до бесконечности. А всё потому что ты пытаешься экстраполировать термин, имеющий строгие границы, на свой частный случай. Ещё можно придумать дохрена разный извращений как получить единицу трансляции в твоём понимании, но, тогда сам термин начнёт терять смысл, имея расплывчатые границы и его можно будет натянуть на что угодно.

Ну и напоследок, уже наболело: QT -- это Apple QuickTime, Qt -- это C++ фреймворк. Deal with it.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446938
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZТы часто оперируешь словом "проект" в своих объяснениях. Однако, в рамках стандарта нет такого понятия.В рамках стандарта очень много чего нет. В стандарте описан только один единственный язык, только один единственный способ использования языка.

Стандарт языка это вещь на которую надо ориентироваться человеку который пишет транслятор языка. Для всех остальных это всего-лишь полезное и забавное чтение которое может ввести в заблуждение.

NekZМне кажется, тут можно продолжать до бесконечности. А всё потому что ты пытаешься экстраполировать термин, имеющий строгие границы, на свой частный случай. Ещё можно придумать дохрена разный извращений как получить единицу трансляции в твоём понимании, но, тогда сам термин начнёт терять смысл, имея расплывчатые границы и его можно будет натянуть на что угодно.Ничего, ничего... начнешь писать проекты на десятке языков разом - отучишься от пагубной привычки ставить рамки на основе одного-единственного языка. Научишься обобщать, начнешь видеть тенденции, почувствуешь правильное понимание термина.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446948
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНичего, ничего... начнешь писать проекты на десятке языков разом - отучишься от пагубной привычки ставить рамки на основе одного-единственного языка. Научишься обобщать, начнешь видеть тенденции, почувствуешь правильное понимание термина.
Нет, спасибо, я уже вышел из IT и возвращаться не хочется.
А причём здесь другие языки? Мы в топике C++. Qt тоже держится в рамках этого языка.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39446964
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZWhite OwlНичего, ничего... начнешь писать проекты на десятке языков разом - отучишься от пагубной привычки ставить рамки на основе одного-единственного языка. Научишься обобщать, начнешь видеть тенденции, почувствуешь правильное понимание термина.
Нет, спасибо, я уже вышел из IT и возвращаться не хочется.
А причём здесь другие языки? Мы в топике C++. Qt тоже держится в рамках этого языка.Вообще то нет. QT это moc-язык.

Иначе придется к С причислять всю когорту языков, которые не имеют собственного кодогенератора, а транслируются через С.

А в чем собственно проблема с единицами трансляции?
(Кроме бугурта НекЗа)
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447482
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZНет, спасибо, я уже вышел из IT и возвращаться не хочется.??? Тогда зачем ты споришь о терминологии?
Причем люди которые этим занимаются профессионально ежедневно говорят "это так", и вдруг человек "вышедший из IT" начинает утверждать "нет, это не так". Ты прокачиваешь скилл тролля?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447487
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВообще то нет. QT это moc-язык.Не думаю что один дополнительный компилятор имеет право давать название всему языку. Чем uic хуже? Да и через linguist'а тоже можно все исходники прогонять, тогда как через moc только заголовки, так почему не linguist-язык?
Я определяю Qt просто как язык основанный на С++.
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447521
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlNekZНет, спасибо, я уже вышел из IT и возвращаться не хочется.??? Тогда зачем ты споришь о терминологии?
Причем люди которые этим занимаются профессионально ежедневно говорят "это так", и вдруг человек "вышедший из IT" начинает утверждать "нет, это не так". Ты прокачиваешь скилл тролля?

IT скиллы-то не пропьёшь ;-) Выход из IT не значит неумение вести конструктивную дискуссию, чего не скажешь о моих оппонентах...

Нет, я до сих пор не могу понять просто, схрена ли то, что строго описано в стандарте пытаются натянуть на все, что ведёт себя похожим образом, но является в корне совсем другим. И к чему вообще этот термин применим? В рамках стандарта есть, например, статические переменные, которые хранятся именно в translation unit'е, и static функции, которые видны только в рамках одного translation unit'а.
Если ты добавляешь подобные сущности в Qt-хедер, они будут себя так вести? Конечно, нет.
Тогда где ещё этот термин применим? Где его использовать?
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447525
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlопределяю Qt просто как язык основанный на С++.

Приплыли...
Это всё равно что назвать FVMas СУБД
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447612
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlSiemarglВообще то нет. QT это moc-язык.Не думаю что один дополнительный компилятор имеет право давать название всему языку. Чем uic хуже? Да и через linguist'а тоже можно все исходники прогонять, тогда как через moc только заголовки, так почему не linguist-язык?
Я определяю Qt просто как язык основанный на С++.
Ну вот не знаю, а где проводить границу - С++/прочее, основанное на С++.

Борландовские расширения считать С++?
QT moc считать C++?
nim считать С++ ?
rust считать С++ ?
Pro*C считать С++ ?

Последние 4 компилируются в с++ с помощью предварительного компилятора.

Как человек, которому не надо прогибаться под изменчивый мир (с), я просто все отклонения от ISO считаю ересью.

Это конечно не помешает мне применять удобные мне решения =)
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447627
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglWhite Owlпропущено...
Не думаю что один дополнительный компилятор имеет право давать название всему языку. Чем uic хуже? Да и через linguist'а тоже можно все исходники прогонять, тогда как через moc только заголовки, так почему не linguist-язык?
Я определяю Qt просто как язык основанный на С++.
Ну вот не знаю, а где проводить границу - С++/прочее, основанное на С++.Расширение языка - это то, что добавляет новый синтаксис в язык. И да, Борланды-Микрософты-ВсеОстальные создавая свой диалект по сути просто расширяют язык.

SiemarglQT moc считать C++? Конечно нет. Это всего-лишь утилита. Компилятор из "расширенного синтаксиса" в классический С++ код.
Когда я говорю что Qt это по существу уже отдельный язык основанный на С++ я базируюсь не только на существовании moc и uic, но и на доступности мета-информации, на существовании сигнально-слотовой системы, на наличии системных синглтонах... Много там всякого есть чего нету в С++, и в чем нужно разобраться чтобы успешно писать на Qt. Но в то-же время, вся стандартная библиотека std уже просто не нужна, так-же нафиг идут все стандарты С++ добавленные в 21-ом веке...
Да, знать базовые принципы С++ для успешного написания приложений на Qt необходимо. Но и не дальше базовых.

Siemarglnim считать С++ ?
rust считать С++ ?Конечно нет. Это самостоятельные языки, для которых (возможно временно) не существует прямых компиляторов в машинный код или в код какой-либо VM.

SiemarglPro*C считать С++ ?А вот этот использует тот-же подход что и Qt с дополнительными внешними прекомпиляторами. В сценарии сборки proc занимает ту-же самую нишу что и moc. Точно так-же как с moc, человек правит один файл, а в с++ компилятор уходит совсем другой.
В то-же время, код в .pc очень похож на стандартный Си и потому, многие считают это расширением языка...

SiemarglКак человек, которому не надо прогибаться под изменчивый мир (с), я просто все отклонения от ISO считаю ересью.

Это конечно не помешает мне применять удобные мне решения =)Считать нечто ересью и использовать это нечто - это не продуктивно.
Во всяком случае, я считаю ересью то, что вызывает у меня отторжение, мне не приятно писать на таких языках и я их ни за что не использую.
А если я что-то применяю, то это уже автоматически переходит из разряда ереси в просто неудобный язык :)
...
Рейтинг: 0 / 0
[QT] QT-заголовок -- это единица трансляции.
    #39447723
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНу вот не знаю, а где проводить границу - С++/прочее, основанное на С++.


Да всё проще. QT код компилируется обычными С++-компиляторами, значит, он должен быть оформлен по правилам С++, иначе такие программы будет просто не собрать.
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] QT-заголовок -- это единица трансляции.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]