Russian Qt Forum
Апрель 19, 2024, 03:09
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Компиляторы и платформы
>
Компиляторы
>
Странность с Clang.
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Странность с Clang. (Прочитано 53424 раз)
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Странность с Clang.
«
Ответ #15 :
Октябрь 25, 2019, 12:15 »
Цитата: qate от Октябрь 25, 2019, 10:57
можно ссылку, для ликбеза, на стандарт по УБ для данного случая ?
В разных стандартах формулировки незначительно отличаются. В
текущем черновике
вот так написано:
Цитировать
Flowing off the end of a constructor, a destructor, or a non-coroutine function with a cv void return type is equivalent to a return with no operand. Otherwise, flowing off the end of a function other than main or a coroutine ([dcl.fct.def.coroutine]) results in undefined behavior.
И вот
тут
ещё:
Цитировать
Change: It is now invalid to return (explicitly or implicitly) from a function which is declared to return a value without actually returning a value.
Rationale: The caller and callee may assume fairly elaborate return-value mechanisms for the return of class objects. If some flow paths execute a return without specifying any value, the implementation must embody many more complications. Besides, promising to return a value of a given type, and then not returning such a value, has always been recognized to be a questionable practice, tolerated only because very-old C had no distinction between void functions and int functions.
А также можно почитать:
Why does flowing off the end of a non-void function without returning a value not produce a compiler error?
.
Записан
Пока сам не сделаешь...
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Странность с Clang.
«
Ответ #16 :
Октябрь 25, 2019, 12:44 »
Цитата: Гурман от Октябрь 24, 2019, 15:26
Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.
Можно ссылку, где в Qt такое непотребство?
Записан
Пока сам не сделаешь...
kambala
Джедай : наставник для всех
Offline
Сообщений: 4727
Re: Странность с Clang.
«
Ответ #17 :
Октябрь 25, 2019, 16:49 »
clang из Xcode по умолчанию выдает предупреждения -Wreturn-type, например. у меня никаких нестандартных настроек в креаторе и проекте нет.
«
Последнее редактирование: Октябрь 25, 2019, 16:50 от kambala
»
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Странность с Clang.
«
Ответ #18 :
Октябрь 26, 2019, 00:59 »
Цитата: Авварон от Октябрь 25, 2019, 11:48
говорят там такое написано.
Код:
Flowing off the end of a constructor, a destructor, or a function with a cv void return type is equivalent to a return with no operand. Otherwise, flowing off the end of a function other than main (6.6.1) results in undefined behavior.
И это есть бред, который K&R идеологии противоречит, и не имеет силы поэтому.
Записан
2^7-1 == 127, задумайтесь...
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3258
Re: Странность с Clang.
«
Ответ #19 :
Октябрь 26, 2019, 14:01 »
Цитата: Гурман от Октябрь 26, 2019, 00:59
И это есть бред, который K&R идеологии противоречит, и не имеет силы поэтому.
У К&Р не было классов и можно было возвращать 0. А что возвращать в плюсах? Дефол-констрактед Т? А если дефолт ктора нет? Вот вам и УБ что определить поведение по умолчанию невозможно.
Как выше уже написали, можно написать такую функцию, которая будет иметь ветку без return, но которая никогда не выполнится (и анализатор хрен докажет что эта ветка не выполняется) => всё отлично, функция абсолютно валидная с тз языка и юзкейзов и никакого УБ.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Странность с Clang.
«
Ответ #20 :
Октябрь 26, 2019, 18:28 »
Цитата: ViTech от Октябрь 25, 2019, 12:44
Цитата: Гурман от Октябрь 24, 2019, 15:26
Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.
Можно ссылку, где в Qt такое непотребство?
Ссылочку на что? На дистрибутив Qt для установки?
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Странность с Clang.
«
Ответ #21 :
Октябрь 26, 2019, 18:31 »
Цитата: Авварон от Октябрь 26, 2019, 14:01
У К&Р не было классов и можно было возвращать 0. А что возвращать в плюсах?
То же самое, что и без плюсов. Функция описана как возвращающая bool. Классы тут ни при чём, этот тип по-умолчанию обычный скалярный, такой же как у K&R.
Записан
2^7-1 == 127, задумайтесь...
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Странность с Clang.
«
Ответ #22 :
Октябрь 26, 2019, 19:36 »
Цитата: Гурман от Октябрь 26, 2019, 18:28
Цитата: ViTech от Октябрь 25, 2019, 12:44
Можно ссылку, где в Qt такое непотребство?
Ссылочку на что? На дистрибутив Qt для установки?
Весь дистрибутив Qt - сплошное непотребство?
У меня, конечно, были подозрения, но не такого масштаба.
Цитата: Гурман от Октябрь 23, 2019, 13:21
То есть у второго варианта функции не было возвращаемого значения, хотя функция объявлена как bool (и в .h также). Компилятор выдал предупреждение, хотя по идее должна выдаваться ошибка - возвращаемое значение не определено. Даже QtCreator 5.10 отметил строку замечанием.
Цитата: Гурман от Октябрь 24, 2019, 13:23
Мой баг только в отсутствии return.
Цитата: Гурман от Октябрь 24, 2019, 15:26
Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.
Так баг у вас или у чувачка из Qt Team?
Записан
Пока сам не сделаешь...
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Странность с Clang.
«
Ответ #23 :
Октябрь 26, 2019, 20:48 »
Цитировать
Так баг у вас или у чувачка из Qt Team?
Наврятли это из Qt-team, слишком уж код-стайл не тот.
Записан
ArchLinux x86_64 / Win10 64 bit
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Странность с Clang.
«
Ответ #24 :
Октябрь 26, 2019, 21:59 »
Цитата: ViTech от Октябрь 26, 2019, 19:36
Так баг у вас или у чувачка из Qt Team?
Чтобы не терять смысл написанного другими, и не задавать глупые вопросы, надо внимательнее читать реплики.
«
Последнее редактирование: Октябрь 26, 2019, 22:17 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Странность с Clang.
«
Ответ #25 :
Октябрь 27, 2019, 10:42 »
Цитата: Гурман от Октябрь 26, 2019, 21:59
Чтобы не терять смысл написанного другими, и не задавать глупые вопросы, надо внимательнее читать реплики.
Действительно, я было подумал, что из-за опции компилятора, где-то в Qt пропустили функцию без return. Оказывается, всё намного проще. Вопрос про непотребства в Qt снимается.
Цитата: Гурман от Октябрь 24, 2019, 15:26
Цитата: Авварон от Октябрь 24, 2019, 15:05
У чувачка банальный -Wall не включен а виноват кланг лол
Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.
Т.е. какие опции компилятора в Qt Team выставят, с такими вы проекты и собираете. Сами эти опции не контролируете, и задать другие, без чувачка из Qt Team, не можете.
Записан
Пока сам не сделаешь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Странность с Clang.
«
Ответ #26 :
Октябрь 27, 2019, 11:41 »
Цитата: ViTech от Октябрь 27, 2019, 10:42
Т.е. какие опции компилятора в Qt Team выставят, с такими вы проекты и собираете. Сами эти опции не контролируете, и задать другие, без чувачка из Qt Team, не можете.
Могу. Но ещё я 11 лет езжу на машине марки Ford, и ни разу не перепрограммировал её управление двигателем и коробкой передач. Хотя тоже могу.
Записан
2^7-1 == 127, задумайтесь...
_Bers
Бывалый
Offline
Сообщений: 486
Re: Странность с Clang.
«
Ответ #27 :
Январь 28, 2022, 04:22 »
Цитата: qate от Октябрь 25, 2019, 10:57
можно ссылку, для ликбеза, на стандарт по УБ для данного случая ?
http://eel.is/c++draft/stmt.return#4
Цитировать
Flowing off the end of a constructor, a destructor, or a non-coroutine function with a cv void return type is equivalent to a return with no operand.
Otherwise, flowing off the end of a function other than main or a coroutine ([dcl.fct.def.coroutine]) results in
undefined behavior
.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...