c - C 中的反斜杠百分比转义是什么?

标签 c gcc

这在 clang 和 gcc 中编译时没有警告:

const char *foo = "\%";

生成的字符串与 "%" 相同。

这个转义是为了什么?在哪里可以找到完整的转义列表?

我想可能是为了转义二合字母,但其他二合字母字符会产生警告(例如 "\:")。

感谢您的帮助!

最佳答案

回答我自己的问题:它支持 SCCS,这是一个有 40 年历史的版本控制系统,甚至早于 RCS。哈!

深入研究编译器,clang 支持这个 because it thinks gcc does :

case '(': case '{': case '[': case '%':
// GCC accepts these as extensions.  We warn about them as such though.

谎言!出现警告,但仅带有 -pedantic 标志(在两个编译器中)。

哦,还有 gcc?它supports the first three for emacs ,我想这很容易混淆:

/* `\(', etc, are used at beginning of line to avoid confusing Emacs.  */
case '(':
case '{':
case '[':

但最后一个:

  /* `\%' is used to prevent SCCS from getting confused.  */
case '%':
  if (pedantic)
      pedwarn ("non-ANSI escape sequence `\\%c'", c);
  return c;

SCCS 支持!这是光荣的!

关于c - C 中的反斜杠百分比转义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142682/

相关文章:

C 程序 - 输出显示在下一行而不使用换行符

gcc - 理解 g++ 编译标志

c++ - 在 Rcpp 包中加载共享对象

c - 有和没有 "-ggdb1"选项的 gcc 调试信息有什么区别?

c - 在WM_RBUTTONUP中,MK_RBUTTON真的意味着SHIFT键按下了吗?什么?

c - 如何使用函数将c中的大写字符更改为小写(或在scanf中接受两者)

带有字符串数组的 C 程序 malloc

c++ - MinGW-w64 的 gcc 和 Address Sanitizer

c - GLFW 无法正确链接

c - 使用主应用程序窗口使拥有的窗口最小化