c - 在像 touch.c 这样的 FreeBSD 代码中,以美元符号作为第一个和最后一个字符的 RCSID 是什么意思?

标签 c freebsd

参见 https://opensource.apple.com/source/file_cmds/file_cmds-82/touch/touch.c第 36 行:

__RCSID("$FreeBSD: src/usr.bin/touch/touch.c,v 1.20 2002/09/04 23:29:07 dwmalone Exp $");

这行是什么意思? __RCSID 是什么,字符串的含义是什么?这是版本控制的一些标准消息吗?

cdefs.h中我找到了

#ifndef __RCSID
#define __RCSID(s) __IDSTRING(rcsid,s)
#endif

#define __IDSTRING(name, string) static const char name[] __used = string

但我还是不知道它们是干什么用的。

最佳答案

这来自 Revision Control System,它是最早的版本控制系统之一,后来被其他一些版本控制系统采用。如果文件包含 $keyword:...$ 形式的字符串,则 .. 部分会在文件更新时自动替换为有关文件版本的信息 checkin 和 checkout 。

这通常被放入一个静态变量中,这样您就可以在生成的目标文件中搜索该字符串,以找出使用哪个版本的源代码来生成它。查看ident有关如何使用它的命令。

我检查了我的一些 Linux 系统,它们没有 ident,但你可以简单地使用 strings:

strings /usr/bin/touch | grep FreeBSD:

关于c - 在像 touch.c 这样的 FreeBSD 代码中,以美元符号作为第一个和最后一个字符的 RCSID 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66286693/

相关文章:

c - 代表另一个或多个字符的 3 个字符构造的名称是什么

windows - BSD 以外的操作系统的原子加载/存储?

linux - 通过串口连接两个Linux系统

python - kqueue 跟踪文件更改 - 在处理以前的事件时有可能丢失事件吗?

c++ - 将图像分割成 64x64 的 block

c - openmp 部分按顺序运行

java - 我想计算代码将进行的迭代总数

c - 将结构指针传递给不起作用的函数

freebsd - crontab没有错误但不执行脚本

mysql - Ubuntu 上 C 和 MySql 中的访问拒绝错误