为什么要使用`code'在评论中包含代码?

时间:2015-12-31 19:53:54

标签: c format comments glibc

我刚刚阅读了一些glibc 2.22源代码(/sysdeps/posix/readdir.c的源文件),并发现了这条评论:

/* The only version of `struct dirent*' that lacks `d_reclen' is fixed-size.  */

(删除了换行符。)

类型和标识符的奇怪强调让我感到困惑。为什么不使用单引号或口音坟墓?这有什么具体原因吗?可能是一些字符集转换错误?
我还搜索了glibc style guide,但没有发现有关评论中代码格式的任何内容。

2 个答案:

答案 0 :(得分:3)

公约。

毫无疑问,C编译器会忽略注释。它们没有任何区别,但编写该评论的开发人员可能更倾向于使用简单的单引号。

ASCII

在源代码中使用非ASCII字符(unicode)是一种相对较新的实践(当涉及英语撰写的源代码时更是如此),并且在许多编程语言实现中仍然存在兼容性问题。 程序输入/输出中的Unicode完全不同(也不完美)。在程序源代码中, unicode字符仍然非常罕见,我怀疑我们会看到它们在旧的代码中出现很多东西,比如POSIX头文件已经有一段时间了。

源代码过滤器

有一些源代码过滤器,例如众所周知的Javadoc等文档生成包,它们会查找特定的注释字符串,例如/**来打开注释。其中一些程序可能会特别处理你的`引用字符串',但引用约定比大多数(全部?)的源代码过滤器更老,可能会给它们特殊处理,所以可能不是这样。

命令替换的反引号

是许多脚本语言(以及StackExchange markdown!)的强大约定,使用反引号(``)来执行命令并包含输出,例如在shell脚本中:

echo "The current directory is `pwd`"

会输出类似的内容:

The current directory is /home/type_outcast

这可能是该惯例背后的部分原因,但我相信Cristoph也有一个观点,即引号是平衡的,类似于正确排版的开启和关闭引号。

所以,再一次,一句话:“惯例”。

答案 1 :(得分:2)

这可以追溯到早期的计算机字体,其中反引号和撇号显示为镜像。事实上,早期版本的ASCII标准祝福了这种用法。

RFC 20转述,比 USAS X3.4-1968 等实际标准更容易获得:

treeForPublic

此遗产也可以在const path = require('path'); const Funnel = require('broccoli-funnel'); const mergeTrees = require('broccoli-merge-trees'); const JS_FILES = ['upup.min.js', 'upup.sw.min.js']; module.exports = { treeForPublic: function() { const upupPath = path.join(this.app.bowerDirectory, 'upup/dist'); const publicTree = this._super.treeForPublic.apply(this, arguments); const trees = []; if (publicTree) { trees.push(publicTree); } trees.push(new Funnel(upupPath, { include: JS_FILES, destDir: '/' })); return mergeTrees(trees); } } Column/Row Symbol Name 2/7 ' Apostrophe (Closing Single Quotation Mark Acute Accent) 6/0 ` Grave Accent (Opening Single Quotation Mark) troff等工具中看到,这些工具最初也使用了此引用样式。

请注意,从语法上讲,使用不同的开始和结束标记是有好处的:它们可以正确嵌套。