LINUX.ORG.RU

Change GCC15

 


0

2

Читаю я статью на opennet: https://www.opennet.ru/opennews/art.shtml?num=63141

И вижу:

Реализованы элементы будущего стандарта C2Y (-std=c2y и -std=gnu2y): 
...
 Поддержка присвоения имён циклам для того, чтобы ссылаться на них в коде.
   outer: for (int i = 0; i < IK; ++ i) {
     switch (i) {
       case 1:
         break;       // jumps to CONT1
       case 2:
         break outer; // jumps to CONT2
     }
     // CONT1
   }
   // CONT2

Не понял. Это что еще за бред?

★★★★★
Ответ на: комментарий от Jullyfish

Еще для подобных целей иногда do while (0) используется. Конечно, с goto удобнее, но иногда оно может быть категорически запрепрещено гайдлайнами:

do {
    ...
    if (!do_init_A()) { break; }
    ...
    if (!do_init_B()) { break; }
    ...
} while (0);
alx777 ★★
()

Они фортран переизобрели?

Reset ★★★★★
()
Ответ на: комментарий от debugger

В Аде 95 операторы циклов тоже с метками:

Уточню - даже у первоначальной ADA были циклы с метками, а не только у Ada 95.

Аналогично имеются метки циклов у потомка ADA - языка Oracle PL/SQL

<<outer>>
FOR ctr IN 1..20 LOOP
   ...
   <<inner>>
   FOR ctr IN 1..10 LOOP
      IF outer.ctr > ctr THEN ...
   END LOOP inner;
END LOOP outer;
BrIg
()

Действительно бред. Нахрена это вообще нужно, если такие вещи без проблем делаются через goto с таким же количеством текста и намного нагляднее. Это же вообще костыль из языков в которых нет goto, не имеющий никакого смысла в С.

Хернёй какой-то ненужной страдают, нет бы в switch()/case строки добавить….

Stanson ★★★★★
()

У афтыря весна. Таких любят модуляторы лора

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

Это из джавы позаимствовали, там вообще нормальных меток нет, только такие.

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

dimgel ★★★★★
()
Ответ на: комментарий от hobbit

Вокруг break в целом сложился инфокульт, одних это просто неприлично простопотомучто!, для других наоборот на зло бабушке отморожу уши. А на деле, это палочка выручалочка, которая если к месту просто делает 1 вещь и делает её замечательно. Хотя тоже практически не использую.

Надо по приколу написать максимально лапшеобразный goto код, ещё один интерпретатор brainfuck например. Чтобы прям вштырило =) и с вложенными switch ещё. Нямка будет красивая!

LINUX-ORG-RU ★★★★★
()

Если это использовать, то выгоды мало, а совместимость пропадает. Неужели оно того стОит?

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

Чойта вдруг? Старый код это не ломает. А новый… ну как всегда с новыми стандартами. В плюсы уже столько всего завезли за последние 15 лет, что меткой больше, меткой меньше…

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

Плюсы-то фиг бы с ними, туда и без того кучу всего нужного и ненужного напихали. Причем, по ощущению, без особой системы.

Но в Си это зачем?

Лучше бы макроязык допилили - условия там, циклы, арифметику. Или для тех же циклов ветку else, чтобы знать вышли ли штатно или по break (хотя это тоже нужно крайне редко).

COKPOWEHEU
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.