Micktu 😬
просто интересно
Andrei
Это что за выражение?
Andrei
data это уже имя
Andrei
,А или ты имеешь в виду каст
Micktu 😬
как взять реф от скащеной переменной
Micktu 😬
где проставить скобочки
Andrei
Ты на плюсах пишешь?
🦥Alex Fails
Andrei
Не надо так кастить.
Micktu 😬
вопрос конкретный есть
Andrei
(uint8_t*)data
Andrei
Так не надо кастить. Это может попросту не работать
Andrei
&((uint8_t*)data)
Micktu 😬
о господи это просто указатель на чар
Micktu 😬
спасибо!
Andrei
Но вообще это выглядит как что-то неправильное явно.
Andrei
Не плюсовое.
Micktu 😬
ага
Micktu 😬
но мне пофиг на религию :))
Micktu 😬
плюсовые касты слишком долго набирать
Andrei
Не.
Micktu 😬
если можно без них - попробую обходиться
Andrei
Ты не понял.
Andrei
Это просто ДРУГАЯ операция
Micktu 😬
у меня была одна ситуация когда компилятор не понял что я хочу сделать
Micktu 😬
с си-кастом
Micktu 😬
но понял с реинтерпретом
Micktu 😬
это был каст указателя на чар в лонг
Andrei
Но я не об этом даже, боже мой.
Micktu 😬
но тут не та ситуация, это синонимичные типы
Andrei
Я о том, что у тебя с кодом что-то не так
Andrei
Если тебе вообще надо брать указатель на указатель
🦥Alex Fails
Andrei
Еще и скастованный
Micktu 😬
Micktu 😬
есть функция
Micktu 😬
в библиотеке
Micktu 😬
она принимает uint8_t**
Andrei
Какая?
Micktu 😬
безо всякого зла, не занудствуй :)
Micktu 😬
Какая?
mrb_dump_irep тебе много скажет
Andrei
А, ну так я и говорю
Andrei
Это в чужой библиотеке
Andrei
сишная каша
Andrei
там пожалуйста
Andrei
делай что хочешь
Andrei
Не плосовый код
Micktu 😬
да, такой вопрос возник только потоум что он не хочетр жрать мой чар поинтер
Micktu 😬
ну в результате я аккуратнее написал
Micktu 😬
size_t outSize;
std::vector<char> out(0x100000);
uint8_t* data = (uint8_t*)out.data();
mrb_dump_irep(mrb, irep, 0, &data, &outSize);
out.resize(outSize);
Andrei
Да, тут всё ок.
Andrei
К слову еще можно писать так
Andrei
&out[0]
Andrei
И соотв
Micktu 😬
знаю-знаю
Micktu 😬
но это очень невыразительно и я везде подправляю это на ::data()
Andrei
(mrb_dump_irep(mrb, irep, 0, (uint8_t**)&&out[0], &outSize);)
Andrei
Да, с data лучше, спору нет.
Micktu 😬
Micktu 😬
настоящий сишный код
Micktu 😬
идеал
Micktu 😬
вот поэтому я боялся этих языков с детства
Micktu 😬
слава богу что все оказалось не так
Andrei
Ну потому что и не надо так писать.
Andrei
Мы ж в c++ чате.
Micktu 😬
главное чтобы в чате здравого смысла
Micktu 😬
Micktu 😬
грязные оптимиизации
Andrei
Micktu 😬
#define wcs_as_long(str) (*reinterpret_cast<const uint64_t*>(str))
bool ext_equals(const wstr_t & filename, const wchar_t * ext)
{
return wcs_as_long(ext) == wcs_as_long(filename.c_str() + filename.length() - 4);
}
🦥Alex Fails
Micktu 😬
Micktu 😬
почему одному компилятору ведомо
🦥Alex Fails
Andrei
то ли лонг, то ли хрен знает что
это наследие 16-битной архитектуры, когда была разница между дальними и ближними указтелями, сейчас она, насколько я понимаю выражается только в перформансе.
Micktu 😬
да, просто давала неверный результат при вызове об статическую константу.
Micktu 😬
и верный в памяти
Micktu 😬
🦥Alex Fails
Дык каст из пойнтеров в числа и оьратно есть уб