Какая польза от \ a в C? - PullRequest
       55

Какая польза от \ a в C?

0 голосов
/ 23 февраля 2020

Я наткнулся на escape-последовательность \a в фрагменте текста в ISO / IEC 9899: 2018 (C18), раздел 5.2.2 / 2 - «Семантика отображения символов»:

\ a (alert) Создает звуковое или видимое предупреждение без изменения активной позиции.

Я никогда не видел, чтобы это использовалось в каком-либо коде C для обозначения ошибки. Кстати, я не знал, что escape-последовательность может / могла вызывать звуковой сигнал в некоторых системах.

  • Какое было / было определенное использование этого \a escape-последовательность?
  • Является ли это устаревшим из более ранних дней C, который сейчас устарел?
  • И в какой ситуации было бы или было бы (если бы оно устарело сегодня) ценить использование этого ? Можете ли вы привести пример?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020
  • Какое было / было определенное использование этой \ escape-последовательности?

Согласно тому же разделу стандарта, который вы читали,

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

Конкретное действие, которое \a последовательность предназначена для производства того, что вы цитировали. На самом деле это используется редко, если вообще когда-либо, в современном коде, и типичные реализации C просто отображают эту последовательность на один символ ASCII, который имеет такое же значение, полагаясь на драйвер терминала для обработки фактического предупреждения. Вы, скорее всего, увидите этот эффект, если случайно выведите двоичный файл в терминал, а не каким-либо другим способом. Это уже устарело?

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

  • И в какой ситуации это будет или были (если это устарело сегодня) ценить использовать это? Можете ли вы привести пример?

Вы бы включили эту последовательность в строку, которая печатается в stdout. Когда строка печатается, вы (возможно) получаете звук колокольчика и / или экран мигает и / или что-то подобное.

printf("Ring the bell...\a\n");
1 голос
/ 23 февраля 2020
  • \a Не всегда используется для ошибки
  • Это символ ascii и может использоваться где угодно.
  • \a Используется для отображения звука. Вы можете попробовать, набрав printf '\a' в bash.
...