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 ★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от firkax

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

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

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

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

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

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

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

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

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

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

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

COKPOWEHEU
()