HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > нубовопросы по c++
Страницы (9): « Первая ... « 2 3 4 5 [6] 7 8 9 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32682
Нанёс повреждений: 392 ед.

Рейтинг



STL это вообще удивительная вещь. Её сделал наш, а гордость почему-то никто не испытывает. Подозрительно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 184006

Старое сообщение 24-09-2019 06:08
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34667
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Дядя Миша
Ну потому что он не совсем наш. Вернее, совсем не наш. Наш - это сам знаешь что, на букву К.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 184010

Старое сообщение 24-09-2019 07:07
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Вот ещё вопрос возник про vardic templates.
Например, если мне нужна функция переменной арности от однотипных аргументов, то я могу записать

C++ Source Code:
1
template<typename ...ids>
2
void foo (const ids&... args){
3
  for(auto& arg: {args...}){
4
    /* do stuff with arg*/
5
    }
6
  }


А можно ли эту конструкцию как-то специализировать для конкретного нетривиального типа под многоточием? Например, я хочу передавать в функцию, пускай, tuple<int,char*,float> — можно-ли написать это в единой конструкции, без привлечения прокси-шаблонов?

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | | IP: Записан
Сообщение: 184737

Старое сообщение 15-10-2019 14:06
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32682
Нанёс повреждений: 392 ед.

Рейтинг



О! Шаблоны позволяют var args? Хотя в шестёрке небось не сработает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 184738

Старое сообщение 15-10-2019 14:17
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



А может кто ни будь пояснить, почему ptr не изменяется в результате?

C++ Source Code:
1
/* relink data <- ptr */
2
inline void relink
3
(void* ptr){
4
  self.data = (t*)ptr;
5
  ptr = self.data + self.offset[0];
6
  printf("relink %p -> %p\n", self.data, ptr);
7
}

Вызывается, например:
C++ Source Code:
void* ptr = nullptr;
cmp.pparts.relink(ptr);
cmp.pindex.relink(ptr);

А в результате:
C++ Source Code:
relink (nil) -> 0x445c0000
relink (nil) -> 0x2d00

При этом, если возвращать изменённый указатель из функции, то он снаружи нормально присваивается безо всяких проблем. В чём тут дело?

Добавлено 30-11-2019 в 04:44:

ps: или я идиот, или одно из двух...

__________________
http://www.moddb.com/mods/monorail-quest

Отредактировано thambs 30-11-2019 в 00:49

Сообщить модератору | | IP: Записан
Сообщение: 187034

Старое сообщение 30-11-2019 01:44
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34667
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


thambs
Потому что ты передаёшь указатель по значению, а не по указателю.
Функция должна иметь сигнатуру

C++ Source Code:
void relink(void **ptr)
со всеми вытекающими модификациями.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 187035

Старое сообщение 30-11-2019 01:51
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



XaeroX
Посыпаю голову пеплом, я точно идиот — слона не углядел.
Вот так, можно

C++ Source Code:
void*& ptr

__________________
http://www.moddb.com/mods/monorail-quest

Отредактировано thambs 30-11-2019 в 02:08

Сообщить модератору | | IP: Записан
Сообщение: 187036

Старое сообщение 30-11-2019 02:01
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34667
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Цитата:
thambs писал:
Вот так, можно

Так, безусловно, тоже можно, но выглядит менее красиво, и сложнее для пони-мания.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 187038

Старое сообщение 30-11-2019 02:44
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



XaeroX
По-моему лучше, так rvalue туда не пропихнёшь.

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | | IP: Записан
Сообщение: 187040

Старое сообщение 30-11-2019 03:00
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32682
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
thambs писал:
А может кто ни будь пояснить, почему ptr не изменяется в результате?

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

Цитата:
XaeroX писал:
Так, безусловно, тоже можно, но выглядит менее красиво

меня удалбывает внутри функции постоянно писать *ptr, некрасиво.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 187042

Старое сообщение 30-11-2019 06:53
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34667
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
меня удалбывает внутри функции постоянно писать *ptr, некрасиво.

А не надо постоянно, достаточно написать это один раз.
Мне вообще эта функция не нравится. Какая-то она неправильная, ненормально это - модифицировать тут же и какой-то self, и входные данные, которые внезапно становятся выходными.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 187044

Старое сообщение 30-11-2019 07:36
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Жесть какая-то, как заранее подмечать такие моменты?

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | | IP: Записан
Сообщение: 189966

Старое сообщение 03-02-2020 13:24
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34667
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


thambs
Прочитал только заголовок, т.к. статья слишком страшно выглядит.
Если это то, о чём я подумал, то в Волатиле это лечится "-fno-strict-aliasing" во всех модулях.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 189972

Старое сообщение 03-02-2020 15:56
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32682
Нанёс повреждений: 392 ед.

Рейтинг



thambs эти статьи всегда берут какой-то сферический пример.
Пусть на реальном покажут. Я не знаю как этот эффект правильно называется, но он присущ любому семейству компиляторов, что на искуственно выдуманной конструкции может случится фейл, тогда как на реальных сложнешийх примерах всё в порядке. Более того - баг только на этих примерах и проявляется. Вот я компилятор bsp тестировал на таких вот примерах. Ну и что? вылетел на комнатке из пяти брашей. А сипульчер прекрасно собирается. Эти статьи - они в первую очередь нужны тем, кто компиляторы пишет, ну в качестве багрепортов. Нахрена это пользователю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 189978

Старое сообщение 03-02-2020 16:47
-
SNMetamorph
Житель форума

Дата регистрации: Jun 2018
Проживает: Ижевск
Сообщений: 585

Рейтинг



Кто-нибудь здесь пробовал использовать фреймворк GTK в разработке? Какие есть плюсы/минусы/специфические нюансы?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord

Сообщить модератору | | IP: Записан
Сообщение: 190160

Старое сообщение 12-02-2020 12:53
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 00:05. Новая тема    Ответить
Страницы (9): « Первая ... « 2 3 4 5 [6] 7 8 9 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > нубовопросы по c++
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024