LINUX.ORG.RU

и как к ты к нему ссылаться собрался? имхо, анонимные объединения имеют смысл лишь в рамках структуры.

anonymous
()

Я, конечно, понимаю, что сишка это язык для избранных и ваша сишка это не моя сишка, но всё же. Каким образом эксперт собрался к типу присваивать объект?

  union {int a; char pad[8];} t = {};
  __auto_type s = (union {int a; char pad[8];}){};
  (union {int a; char pad[8];}){};

Вот так и живём, а потом эти эксперты начинают спорить с тобою о сишке.

anonymous
()
Ответ на: комментарий от anonymous

в любой непонятной ситуации оборачивайте в скобочки, помогает(во(многих языках))

anonymous
()
Ответ на: комментарий от i-rinat

Хм... Надо еще раз подумать...

cvv ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Вау, ты мне открыл глаза :-) Кстати не могли бы вы прокоменнтировать последнюю строчку?

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv
__auto_type s = (union {int a; char pad[8];}){};
                (union {int a; char pad[8];}){};
anonymous
()

При чём тут clang/llvm? Эта херня у тебя не соберётся любым нормальным компилятором.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от cvv

Она ничем не отличается от последней. Хотя может тебя смутило то, что оно похожа на дефолтный список инициализаций.

На самом деле всё просто. (){} - это банальное создание объекта и список его инициализации. Т.е. type name = {} == (type){}, только имени нет и в результате у тебя обычная переменная, только без имени. Я тут написал портянку про то, как я вывел эту фишку ничего не зная о ней, но это такое - это бесполезно вам писать.

Хотя ладно, всё же решил переписать более культурно. Если кратко в стандартном понимании type name = {} - скобочки есть ничто иное, как список инициализации name, но тут явная дыра, ибо теряется семантика присваивания. В крестах убрали эту дыру и выпилили присваивание.

Т.е. можно предположить, что (){} - это другая семантика и просто алиас на то, что ты пытался написать в топике, но опять же - дыра. Мы ломаем семантику каста.

В конечном итоге всё это вяжется в одно только тогда, когда мы под {} определим ни что иное как объект, в данном случае некий автоматический объект. Т.е. объект который может сводить выражение-инициализацию к любому типу, к объект которого его присваивают.

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

Ну конечно, всегда есть возможно определить авторов и языка и гнуси идиотами. Эти то же всё можно объяснить. Хотя вот видя генерики я даже не сомневаюсь в том, что комитет по стандартизации идиоты. Такое убожество надо было постараться высрать.

anonymous
()
Ответ на: комментарий от cvv

Ну собственно да - ты просто перепутал эту конструкцию и классическую. Это нихрена не классическая конструкция.

В соседнем треде я пацану как доказательство того, что его сишка это не моя сишка, а вернее его сишка это не сишка - такую конструкцию:

puts((struct {char to_string[0]; char hello[5]; char space; char world[5]; char zero;}){.hello = "hello", .space = ' ', .world = "world"}.to_string);

Это на тему того, что это «переменная».

anonymous
()
Ответ на: комментарий от anonymous

Т.е. type name = {} == (type){}, только имени нет и в результате у тебя обычная переменная, только без имени.

Вау, премного благодарен за столь подробное и внятное обьяснение.

Я тут написал портянку про то, как я вывел эту фишку ничего не зная о ней, но это такое - это бесполезно вам писать.

Если сможешь поделится - буду благодарен. Я первый раз за последние десять лет наткнулся на серьезный прокол в знании С.

cvv ★★★★★
() автор топика
Последнее исправление: cvv (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну собственно да - ты просто перепутал эту конструкцию и классическую. Это нихрена не классическая конструкция.

Ну ... как тебе сказать ... последние 10 лет я ее вижу несколько раз в году в различных приложениях. ну может без __auto_type, но это не суть ...

cvv ★★★★★
() автор топика
Последнее исправление: cvv (всего исправлений: 1)
Ответ на: комментарий от cvv

Если сможешь поделится - буду благодарен. Я первый раз за последние десять лет наткнулся на серьезный прокол в знании С.

Я там ниже написал. Про то, что есть {} в случае, если мы не считаем авторов идиотами. Далее из этого делаются банальные выводы и я их сделал. Если это универсальный объект, то почему его нельзя превратить в конкретный? Если это объект, то он должен где-то существовать.

Я там начал толкать про то, что в конечном итоге си это такой язык, который не нужно знать - его можно и нужно понимать. Так происходит со всем, что создали люди, а не обезьяны. Это не нагромождение убогих и несвязный кастылей, как все остальные типа языки. Но толку это писать, если их адепты придут и меня потрут?

Мир жесток, а люди создали себе иллюзию и верят в то, что можно чему-то научиться. Ничего нельзя. Вот и получается, что потенциальные домохозяйки и дворники пошли что-то там безуспешно ваять, а далее обозлились на мир и пытаются верить, что какой-то раст, либо ещё какая-то херня поможет им.

А это не более чем очередная мечта. Бездарь может жить только мечтой в то, что когда-то что-то измениться и ему дадут пару педалей и он перестанет быть бездарем. Сложно понять, что в том, что ты ничего не можешь виновата не сишка. А ещё сложнее осознать, что ты ничто.

Дали педали, сказали куда жать и эксперт эмулирует бурную деятельность.

Это и на тему твоей пасты про «знание».

anonymous
()
Ответ на: комментарий от cvv

Ну ... как тебе сказать ... последние 10 лет я ее вижу несколько раз в году в различных приложениях. ну может без __auto_type, но это не суть ...

Ну значит ты не понимаешь что это такое и тебе кажется, что это просто ={}, только с кастом форфан.

На самом деле это создание объекта как и в третьем примере, только с присваиванием его к(копированием в) переменной.

anonymous
()
Ответ на: комментарий от cvv

При том что Гцц это нормально компилит. Или с тривиальными правками.

Тривиальные правки это добавление имени переменной, да?

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Кстати, тебе может быть интересным: несколько лет назад тут был чел у которого сишный код выглядел как скрипт на баше :-)

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.