170 похожих чатов

Если у меня есть строковый литерал, который используется только в

компайл-тайме, дает ли мне кто-то гарантии что он не попадет в бинарь? Если да, то кто?
Варианты ответа:
Стандарт.
Компилятор.
Линкер.
Гарантий нет.

40 ответов

41 просмотр

гарантий нет

гарантий нет, скорее всего точно попадет в бинарь

Aleksei Kuznetsov-Kuznetsov Автор вопроса
Rustam
гарантий нет, скорее всего точно попадет в бинарь

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

Гарантирует стандарт C++26 (конкретно https://wg21.link/P2361 )

Aleksei Kuznetsov-Kuznetsov Автор вопроса

Хмм, там достаточно конкретный список использований. Покрывает ли бумага такой кейс https://godbolt.org/z/sxTGhr1Wh? Выглядит как будто нет

Aleksei Kuznetsov Kuznetsov
Хмм, там достаточно конкретный список использовани...

у вас именно такой use case, когда в рантайме используется лишь часть строкового литерала?

Aleksei Kuznetsov-Kuznetsov Автор вопроса
Vlad
у вас именно такой use case, когда в рантайме испо...

нет, представте что там нормальная хеш функция, используется весь литерал

Aleksei Kuznetsov Kuznetsov
нет, представте что там нормальная хеш функция, ис...

тогда нет, ваш use case этой бумагой не покрывается

немного не в тему, но зачем вам вообще нужна такая гарантия?

тогда вам правильно сказали, что гарантий нет можете завести баг в кланге, если он не покрывает ваш use case, хотя мог бы

Aleksei Kuznetsov-Kuznetsov Автор вопроса
Vlad
тогда вам правильно сказали, что гарантий нет мож...

Ну я спрашиваю как раз потому что наблюдаю что компиляторы выкидывают строки в таких юзкейсах. Но не нашел нигде чем бы это было гарантировано

Aleksei Kuznetsov-Kuznetsov Автор вопроса
blue hatred
немного не в тему, но зачем вам вообще нужна такая...

Меньше строк - меньше бинарь - меньше вероятностей что уедет что-то конфиденциальное в бинарь

Aleksei Kuznetsov Kuznetsov
Ну я спрашиваю как раз потому что наблюдаю что ком...

гарантировано quality of implementation, так сказать скорее всего оно довольно давно было заточено для -Os

Aleksei Kuznetsov-Kuznetsov Автор вопроса
Vlad
гарантировано quality of implementation, так сказа...

Удивило что даже без оптимизаций все ведут себя так

Aleksei Kuznetsov Kuznetsov
Меньше строк - меньше бинарь - меньше вероятностей...

ну как вам уже сказали, стандартизированных гарантий вам никто не дает, но на практике имплементации выкидывают любые строки, которые не используются

blue hatred
немного не в тему, но зачем вам вообще нужна такая...

В эмбеддед обычно по определённым адресам пришибают метаинфу для скриптов и валидации что натягивают прошивку именно от этого девайса, а не левак. Даже иногда мини подписи туда толкают или контрольные суммы. Обычно за таблицей векторов прерываний. Не факт, что ему это надо, но такие практики есть)

Vladimir123
В эмбеддед обычно по определённым адресам пришибаю...

ну как уже было сказано выше, имплементации имеют моду выкидывать мусор, поэтому лучше опираться на это и сделать consteval функции для подобных строк, чтобы уж точно гарантировать, что они будут использованы только во время компиляции

blue hatred
ну как уже было сказано выше, имплементации имеют ...

Точно, посмотрел внимательнее - у него задача наоборот, чтобы гарантированно не попало в бинарь

Vladimir123
В эмбеддед обычно по определённым адресам пришибаю...

могу привести вот такой пример с CRC-64 https://godbolt.org/z/PfcaE8vse правда для него вам нужен C++20

Vladimir123
Точно, посмотрел внимательнее - у него задача наоб...

я тоже слеповат, не заметил, что вообще не тому человеку отвечал :D

Как ГЭККом разжились, неплохо стало, даже Когти Смерти почти не беспокоят

Vadim Ushakov
Как ГЭККом разжились, неплохо стало, даже Когти См...

я как увидел слово ГЭКК в одном из чатов сразу зашел что это тут обсуждается, и не ошибся, то самое

🐙 Antony Polukhin
Гарантирует стандарт C++26 (конкретно https://wg21...

Это прям 100% или опционально? И если да, то чем мотивирована такая обязательность (понятно, что неиспользуемый в рантайме литерал можно выкинуть, но зачем обязывать это делать)?

Aleksei Kuznetsov Kuznetsov
Меньше строк - меньше бинарь - меньше вероятностей...

Хреновый способ сохранения секретности был выбран

disba1ancer
Хреновый способ сохранения секретности был выбран

ну если довести до логического финала (вообще не иметь бинарь) то вполне себе надёжный (нет бинаря — утекать неоткуда)

disba1ancer
Это прям 100% или опционально? И если да, то чем м...

Обязательно. Просто это все делают, так что прописали в стандарте )

🐙 Antony Polukhin
Обязательно. Просто это все делают, так что пропис...

Имхо поспешили, хватило бы разрешения так делать

🐙 Antony Polukhin
Обязательно. Просто это все делают, так что пропис...

Кстати, там noexcept в механизм частичной специализации не собираются завозить? Чтобы делать такое: template <typename T> struct Foo; template <typename Ret, typename ... Args, bool nx> struct Foo<Ret(Args...) noexcept(nx)> { ... };

Denis P
так оно и сейчас вроде работает?

Там требуется тип. В типе можно писать noexcept(expr)?

Denis P
Foo<void() noexcept(true)> вы про это?

Да. Я не уверен, что так можно

Denis P
так оно и сейчас вроде работает?

Только в gcc и шланге и является расширением

Denis P
Foo<void() noexcept(true)> вы про это?

Надо чтобы вместо true выводился параметр шаблона в специализации

Denis P
он и выводится в специализации же?

Формально нет, но gcc и шланг умеют

disba1ancer
Формально нет, но gcc и шланг умеют

в 23 стандарте видимо пофиксят)

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта