Size: a a a

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

2020 October 15

AB

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

AB

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

AW

Alexander Wizaral in IT KPI C/C++ ХВ (не UB)
hazer_hazer
Привет. Появилась проблема. (C++)
Проект относительно большой, если нужно могу кинуть ссылку на github
Код компилится без единой ошибки, но когда запускаю, неважно где, в clion или через консоль компилю и запускаю, абсолютно ничего не происходит. В консоли даже не получается убить процесс с помощью Ctrl+C
Если убрать весь код в main и просто сделать простейший Hello World, то тоже не работает
То есть, проблема именно в том, что я компилю вместе с файлами всего проекта.
Для меня это действительно новость, что не используя код других файлов, main может не работать.

Есть у кого мысли в чем может быть проблема, мб кто сталкивался с подобным. Может дело в глобальных переменных, но код ведь нельзя исполнять глобально, только переменные разве что создавать, так что это странно.
Буду признателен, если поможете
Мне, как и человеку выше, кажется, что дело в глобальных/статичных переменных. Если есть возможность юзать 17 стандарт, то советую слово inline для глобальных переменных, которые объявлены в хедерах. Тогда не нужно возиться с extern.
Что касается хедеров, то их не нужно перечислять в компилируемых файлах, если речь о консоли. Их содержимое попадает в .cpp с помощью include. Если речь о проекте в clion/vs/etc, то это необходимо для статического анализатора.
источник

AW

Alexander Wizaral in IT KPI C/C++ ХВ (не UB)
Наверняка в clion есть возможность сделать точку останова сразу после старта программы
источник

ДЦ

Дмитро Цимбалюк... in IT KPI C/C++ ХВ (не UB)
зачем вообще использовать глобальные переменные?
источник

AW

Alexander Wizaral in IT KPI C/C++ ХВ (не UB)
Дмитро Цимбалюк
зачем вообще использовать глобальные переменные?
Singleton
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Дмитро Цимбалюк
зачем вообще использовать глобальные переменные?
Целая масса вариантов, писать список лениво
источник

AB

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

AB

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

AB

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

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Дмитро Цимбалюк
зачем вообще использовать глобальные переменные?
ну чтобы было
источник

ДЦ

Дмитро Цимбалюк... in IT KPI C/C++ ХВ (не UB)
логично
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
а чувак выше инкОпсулирует глобалки, збс живет🌚
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Помогите, пожалуйста, правильно применить std::forward и std::get в моей шаблонной функции apply_f
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Все правильно написано, кроме функции apply_f
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Alexander Pavlyuchuk
а чувак выше инкОпсулирует глобалки, збс живет🌚
Могу позволить 😎
источник

АХ

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

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
В main я так делаю
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
auto f = [](int x, double y, double z) { return x + y + z; };
 auto t = std::make_tuple(30, 5.0, 1.6);  // std::tuple<int, double, double>
 auto x = f(std::get<0>(t), std::get<1>(t), std::get<2>(t)); // x = 36.6
источник