Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要使用'code';在评论中包含代码?_C_Format_Comments_Glibc - Fatal编程技术网

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

为什么要使用'code';在评论中包含代码?,c,format,comments,glibc,C,Format,Comments,Glibc,我刚刚阅读了一些glibc 2.22源代码(源文件位于/sysdeps/posix/readdir.c),发现了以下评论: /* The only version of `struct dirent*' that lacks `d_reclen' is fixed-size. */ (新行已删除。) 类型和标识符的奇怪强调让我感到不舒服。为什么不使用单引号或des重音符号?这背后有什么具体原因吗?可能是字符集转换错误吗? 我还搜索了,但在注释中没有找到任何关于代码格式的内容。这可以追溯到早期

我刚刚阅读了一些glibc 2.22源代码(源文件位于
/sysdeps/posix/readdir.c
),发现了以下评论:

/* The only version of `struct dirent*' that lacks `d_reclen' is fixed-size.  */
(新行已删除。)

类型和标识符的奇怪强调让我感到不舒服。为什么不使用单引号或des重音符号?这背后有什么具体原因吗?可能是字符集转换错误吗?

我还搜索了,但在注释中没有找到任何关于代码格式的内容。

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

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

这种传统也可以在工具中看到,如
troff
m4
TeX
,它们最初也使用这种引用样式

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

。 毫无疑问,C编译器会忽略注释。它们没有区别,但是写评论的开发者可能更喜欢它们的外观而不是简单的单引号

ASCII码 在源代码中使用非ASCII字符(unicode)是一种相对较新的实践(对于英语编写的源代码来说更是如此),并且在许多编程语言实现中仍然存在兼容性问题。程序输入/输出中的Unicode完全是另一回事(这也不完美)。在程序源代码中,unicode字符仍然非常少见,我怀疑在一段时间内,我们是否会看到它们在像POSIX头文件这样的旧代码中出现

源代码过滤器 有一些源代码过滤器,如众所周知的文档生成包,它们查找特定的注释字符串,如打开注释的
/**
。其中一些程序可能会特别处理“引用字符串”,但这种引用约定比大多数(所有?)源代码过滤器都要古老,这些过滤器可能会对它们进行特殊处理,所以可能不是这样

命令子执行的反勾号 许多脚本语言(以及StackExchange markdown!)中都有一个强大的约定,即使用反勾号(```)执行命令并包含输出,例如在shell脚本中:

echo "The current directory is `pwd`"
其输出类似于:

The current directory is /home/type_outcast
这可能是惯例背后的部分原因,但我相信克里斯托夫也有一点,关于引号的平衡,类似于正确排版的开始和结束引号


所以,再一次,用一句话来说:'惯例'。

为什么沉默的投票?我记得,这是一个*尼克斯惯例,从一个“向前倾斜”到“如此”和“相反”的时代开始。我怀疑它已经被纳入了为期待它而构建的工具中。另外:为了支持@Grault的理论,请看一个非常早期的例子(几乎与VT100相同)——正如你所看到的,单引号与backtick正好相反,别忘了,它利用不同的打开和关闭标记来允许nesting@cad:X以及ASCII标准的早期版本,其中撇号被称为撇号(右引号急性重音),反勾号被称为严重重音(左引号)-cf我不明白你想在“ASCII”部分。好吧,它们是新的,但这如何解释为什么使用撇号和严重重音?唯一严重重音是unicode或某些Windows扩展,对吗?@cad ASCII严重重音(在任何ASCII图表上都是96)直到最近,对于大多数程序员来说,在计算机源代码中使用独特的开头引号是唯一合理的选择。虽然a代表“美国”,但ASCII是(并且是)世界上最广泛认可的文本编码(Unicode是ASCII的超集)特别是当你考虑所有的变种时,广泛部署的POSIX报头的维护者很可能不会通过在一个注释中使用一个花哨的引用字符来编码警告错误报告而被淹没,所以它们保持简单(这总是意味着ASCII 32-126!)RFC 20(“ASCII格式的网络交换”)。仅指定7位ASCII在网络上的使用。它绝对不是您所说的“ASCII标准”。我的美国ASCII官方授权硬拷贝,ANSI X3.4-1986(,也许是您答案的更好来源?)将#96列为“严重重音”,而不是引号,但您对早期版本的看法是正确的。1975年仍然有#引用“文本,尽管一些非官方版本更新缓慢或选择不更新。不管怎样,从那以后我就一直用它作为引语。:-)@type_outcast:RFC只是我在网上短时间内找到的第一份提到这种用法的“官方”文件——我查看的实际标准的扫描结果是一个我不完全理解的版本。“ASCII图表”很容易获得,但实际的规格却不是,可能是因为我必须签署同样可怕的法律术语才能得到我的。我不会在其27页的每一页上都链接到“禁止复制和联网”的内容。:-)但是,如果你想引用规范,你可以引用USAS X3.4-1968,并包含你的文本,它与我的X3.4-1968逐字副本相匹配(好的,它都是大写的),并将你的RFC 20链接作为ASCII图表的一个例子,使用该措辞。或者离开它。我不是想吹毛求疵,来,帮帮忙就行了@type_outcast:我添加了一个关于X3.4-1968的not-about,并对其实际存在的确认表示赞赏
The current directory is /home/type_outcast