Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 October 15

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
Кстати. А не будут ведь запускаться cpp файлы, если хедеры были включены при компиляции, но не включены в main?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Хедеры не попадают на процесс компиляции отдельно, они будут включены в .cpp файлы на этапе препроцессинга
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
И ещё кое-что.
Если проблема может быть в extern переменных, насколько правильно будет их заменить конструкцией вроде:
void blah(param) {
   static type var;
   //...
}

?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
hazer_hazer
Кстати. А не будут ведь запускаться cpp файлы, если хедеры были включены при компиляции, но не включены в main?
Если в целевых .cpp будут статические или глобальные переменные которые требуют динамической инициализации то они будут выполняться, не в зависимости от того включаешь ли ты их декларации через соответствующие хедеры в своём файле с main
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
hazer_hazer
И ещё кое-что.
Если проблема может быть в extern переменных, насколько правильно будет их заменить конструкцией вроде:
void blah(param) {
   static type var;
   //...
}

?
Тут я думаю ты нарушишь дизайн в коде с которым ты работаешь
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Тем более если это какой-то проект, а не лаба на 100 строк
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
А вот такая конструкция насколько плоха:
class A : public B {
   A() : B(get_something()) {}
}

?
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
get_something() будет же при создании вызван?
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
hazer_hazer
get_something() будет же при создании вызван?
буде
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
Ну. Я имею в виду, насколько это не best practice?
Просто единственное, чем это можно как мне кажется заменить, это extern того, что возвращает get_something
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Я бы на твоём месте искал природу такого поведения
Включи отладчик, поставь точки останова, профилируй
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Может там что ждёт от системы
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
Да там вообще странная фигня.
В clion - используемая память - нет информации
Вообще не по чему нет инфы.

Ладно. Я тут вас беспокою, а может мне стоит просто компилятор переустановить)

Как раз подумывал перейти с g++ на clang
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
А отладчик что говорит?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Вряд-ли компилятор решит проблему
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Возможно зависимости сбоят, посмотри все ли библиотеки нужных версий и не заведены ли на них баги под твоим дистрибутивом
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
У меня например карточка intel hd периодически ссорится с опенгл под debian 10
источник

h

hazer_hazer in IT KPI C/C++ ХВ (не UB)
Aleksey Belkevich
Возможно зависимости сбоят, посмотри все ли библиотеки нужных версий и не заведены ли на них баги под твоим дистрибутивом
Проект личный, зависимостей вообще нет, чистые плюсы
Может проблема действительно в компиляторе, так как использую винду с mingw
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Что приводит к фризу секунд на 10-20 при старте приложений
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
А, это как два пальца
источник