Size: a a a

cxx.Дискуссионная

2020 April 27

RM

Roy Mustang in cxx.Дискуссионная
Структуры, которые во время компиляции приводятся к обычным аргументам (без создания структуры в выходном файле)
источник

RM

Roy Mustang in cxx.Дискуссионная
Это позволяет не использовать классы, но при этом иметь красивый код
источник

АК

Александр Караев... in cxx.Дискуссионная
Roy Mustang
Структуры, которые во время компиляции приводятся к обычным аргументам (без создания структуры в выходном файле)
структуры ровно так себя и ведут сейчас
источник

АК

Александр Караев... in cxx.Дискуссионная
не считая мелких нюансов
источник

АК

Александр Караев... in cxx.Дискуссионная
и пока ты не пошёл в IDA Pro доказывать, что генерируется разный асм-код, я отвечу, что в стандарте не специфицирована передача аргументов (через регистры или через стек) в таких ситуациях, это решает ABI
источник

RM

Roy Mustang in cxx.Дискуссионная
Александр Караев
и пока ты не пошёл в IDA Pro доказывать, что генерируется разный асм-код, я отвечу, что в стандарте не специфицирована передача аргументов (через регистры или через стек) в таких ситуациях, это решает ABI
То есть, идея выше по сути мало преимуществ дает?
источник

АК

Александр Караев... in cxx.Дискуссионная
Roy Mustang
То есть, идея выше по сути мало преимуществ дает?
если тебя беспокоит именно уровень ассемблера, то в теории она могла бы помочь, но это забивание гвоздей микроскопом.
нужно чинить Itanium ABI (если не ошибаюсь), а не вводить лишние сущности
источник

АК

Александр Караев... in cxx.Дискуссионная
Roy Mustang
То есть, идея выше по сути мало преимуществ дает?
источник

O

Ofee in cxx.Дискуссионная
Till Schneider
А чего его настраивать? Скачал расширение и готово
Не ко мне же вопросы...
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
struct_mutable MyStruct
{
  uint32_t arg1 {};
  uint64_t& arg2 {};
}

void foo(MyStruct input)
{
  input.arg1 = 10;
  input.arg2 = 55;
}

void main()
{
  MyStruct tmp;
  foo(tmp);
  // cout: arg1 is 0, arg2 is 55
}
uint64_t& в поле? Мне кажется, ты делаешь что-то не так...
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
uint64_t& в поле? Мне кажется, ты делаешь что-то не так...
Это не то же самое, что в обычных структурах, это указывает, какие аргументы нужно передавать в foo по ссылке, а какие нет при компиляции
источник

RM

Roy Mustang in cxx.Дискуссионная
По сути, структура раздевается и все переменные из нее вытаскиваются, а затем foo приводится к сигнатуре из того же порядка переменных что структура, но при этом он принимает каждый аргумент отдельно и & или * после типа говорят о том, как эта переменная будет принята функцией. После компиляции структура вовсе отсутствует и функция foo принимает вид, как если бы мы в нее передавали множество аргументов через запятую
источник

IO

Igor Okhremchuk in cxx.Дискуссионная
Roy Mustang
По сути, структура раздевается и все переменные из нее вытаскиваются, а затем foo приводится к сигнатуре из того же порядка переменных что структура, но при этом он принимает каждый аргумент отдельно и & или * после типа говорят о том, как эта переменная будет принята функцией. После компиляции структура вовсе отсутствует и функция foo принимает вид, как если бы мы в нее передавали множество аргументов через запятую
Это ты про ассемблер что ли?
источник

RM

Roy Mustang in cxx.Дискуссионная
Какова вероятность коллизии, если UUID машины к uint64_t хешануть?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Какова вероятность коллизии, если UUID машины к uint64_t хешануть?
Почитай документацию?
источник

RM

Roy Mustang in cxx.Дискуссионная
А какой алгоритм хеширования посоветуете? Что-то из готового имею в виду, какой нибудь мурмур хеш и т.п.
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
std::hash
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Roy Mustang
Какова вероятность коллизии, если UUID машины к uint64_t хешануть?
В лучшем случае 1/2^64
источник

АК

Александр Караев... in cxx.Дискуссионная
источник

АК

Александр Караев... in cxx.Дискуссионная
Хороший был автор
источник