\a在C语言中有什么用?

What is the use of \a in C?

我在 ISO/IEC 9899:2018 (C18) 第 5.2.2/2 节 - "Character display semantics" 的一段文本中偶然发现了 \a 转义序列:

\a (alert) Produces an audible or visible alert without changing the active position.

我从未见过在任何 C 代码中使用它来指示错误。顺便说一下,我不知道转义序列 can/could 在某些系统上会触发声音信号。

非常感谢。

  • \a 并不总是用于错误
  • 它是一个ascii字符,可以在任何地方使用。
  • \a 用于显示声音。您可以尝试在 bash.
  • 中输入 printf '\a'
  • What is/was the certain use of that \a escape sequence?

根据您正在阅读的标准的同一部分,

Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices as follows

\a 序列旨在产生的特定动作就是您引用的内容。实际上,在现代代码中很少使用(如果有的话),典型的 C 实现只是将该序列映射到具有相同意义的单个 ASCII 字符,依赖于终端驱动程序来处理实际警报。如果您不小心将二进制文件输出到终端,则比任何其他方式更有可能看到效果。

  • Is it a remain from the earlier days of C, that is obsolete now?

我不知道它被用于我见过的任何代码中描述的目的。从这个意义上说,是的,它已经过时了,但是从标准的角度来看,该规定不是过时的。

  • And in which situation it would be or were (if it is obsolete today) appreciated to use that? Can you provide an example?

您可以将该序列包含在打印到 stdout 的字符串中。打印字符串时,您(可能)会听到铃声和/或屏幕闪烁和/或类似的东西。

printf("Ring the bell...\a\n");