我刚刚阅读了一些glibc 2.22源代码(/sysdeps/posix/readdir.c
的源文件),并发现了这条评论:
/* The only version of `struct dirent*' that lacks `d_reclen' is fixed-size. */
(删除了换行符。)
类型和标识符的奇怪强调让我感到困惑。为什么不使用单引号或口音坟墓?这有什么具体原因吗?可能是一些字符集转换错误?
我还搜索了glibc style guide,但没有发现有关评论中代码格式的任何内容。
答案 0 :(得分:3)
毫无疑问,C编译器会忽略注释。它们没有任何区别,但编写该评论的开发人员可能更倾向于使用简单的单引号。
在源代码中使用非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
等工具中看到,这些工具最初也使用了此引用样式。
请注意,从语法上讲,使用不同的开始和结束标记是有好处的:它们可以正确嵌套。