Добрый день, господа. Вообщем есть структура и у нее есть поле-указатель на себя же, типа: struct X { struct X link; }; Проект собираю bash-скриптом. Компилирую два объектных файла где есть одинаковые строчки: struct X x = malloc(sizeof(struct X)); printf("%d\n", x->link == NULL); Так вот, при сборке в один эксэшник и запуске, на выход получаю 1 0
Как так? Причем из второго файла указатель реально куда-то ведет, если его вывести а первый нет.
P.S. В обоих случаях макрос NULL определяется из <stddef.h>. По крайней мере мне так говорит vscode
>>1284750 Я не плюсоблядь, я джавакотлинобоярин. Просто охуел, что кто-то юзает структуры вместо классов в 2018 году, когда классы в с++ спокойно можно юзать и в ус не дуть. Вы в курсе, что структуры - устаревшая хуета с дооопшных времен и сейчас уже от них толку нет?
>>1284728 Обезьяна живет в своем манямире, в котором за него всю работу делает конпелятор и сборщик мусора и даже не знает, что за пределами манямира есть другая жизнь, не лучше, не хуже, просто другая. Но она далека до понимания обезьяны.
>>1284967 Не пиши больше ничего на форумах, связанных с программированием или на этой борде. Не позорься, ты - дно, которое всерьез не понимает, что классы появились больше 2 десятилетий назад и любой уважающий себя язык уже трансформировался так, чтоб их поддерживать (даже мерзкий паскаль и тот уже стал оо-языком). Но нет, такие как ты держатся на ебаный си, который не развивается еще с 90-х, высирают на форумах хуйню о том, что классы не нужны на самом деле все мы тут понимаем, что такие дауны как ты просто не смогли понять что это такое, также что такое инкапсуляция, наследование, полиморфизм и т.д. и пишут свое "важнейшее экспертное мнение", не важно с каким уровнем абсурда. Вот даже сейчас - нахуй ты сюда приплел сборщик мусора, даун? Ты в курсе, что GC никак не связан с классами и может не присутствовать в оо-языках?
> в котором за него всю работу делает конпелятор да, ведь я живу в 2018 году, я не использую диски, дискеты и перфокарты, представляешь? Я не пишу код на ассемблере или паскале или ПЛ-1. Я пишу актуальные вещи на актуальных языках и получаю за это факту хорошие деньги, пока ты несешь хуйню на форумах, не понимаешь что к чему и строишь из себя дебила. Пошел нахуй отсюда, крч.
>>1284859 >кто-то юзает структуры вместо классов в 2018 году, когда классы в с++ спокойно можно юзать и в ус не дуть Структуры и классы в с++ это одно и то же.
>>1285071 Чувак, во-первых полиморфизм/инкапсуляция/наследование это самая малая часть ООП которая может быть и если ты используешь объекты только по этим принципам - то ты быдлокодер. Во-вторых в Си не нужно ООП (по моему мнению), потому что там есть указатели, через которые можно реализовать много крутых фич. В-третьих Джава (как и многие другие высокоуровненвые языки) работает из-под ВМ, поэтому писать на ней компилятор, к примеру - тупо.
И не нужно навязывать свое мнение по поводу того что везде должно быть ООП. Это не единственная актуальная парадигма.
>>1285212 Знаю и пишу на высокоуровневых, я микроконтроллерщик, но сейчас я вообще на фулстеке, каждой задаче - свой инструмент. А обезьяна потому что ведет себя так. От таких и появляются С# для STM32, Python для ESP8266
>>1285071 Я увидел множество форумов где люди срутся, выясняя что же такое ООП и как с ним работать! Охуеть! Один говорит избитые фразы про "инкапсуляцию, наследование, полиморфизм и абстракцию", но это и так все знают, второй говорит что ООП вообще не существует, а это просто красивое название процедурщины, третий вообще хуесосит двух предыдущих. И честно говоря я дезориентирован от такой херни, я просто не понимаю как такое может быть. Кто-нибудь может себе представить как механики обсуждают двигатель внутреннего сгорания и никто толком не может объяснить как он работает, а кто-то из механиков вообще говорит что ДВС это просто красивое название парового двигателя? Вот и получается что нет никакого четкого однозначного ответа, примера о ООП. Можно сколько угодно читать Александреску, Буча и прочих, но так и не найти нормального ответа как работать с ООП правильно, чтобы никто не доебался.
struct X {
struct X link;
};
Проект собираю bash-скриптом. Компилирую два объектных файла где есть одинаковые строчки:
struct X x = malloc(sizeof(struct X));
printf("%d\n", x->link == NULL);
Так вот, при сборке в один эксэшник и запуске, на выход получаю
1
0
Как так? Причем из второго файла указатель реально куда-то ведет, если его вывести а первый нет.
P.S. В обоих случаях макрос NULL определяется из <stddef.h>. По крайней мере мне так говорит vscode