什么程序/实用程序在源代码中使用特殊字符串“@(#)”?

时间:2009-10-27 20:46:07

标签: c unix version-control

在源代码中的注释(特别是旧代码)中,可以在标题注释中看到文件名,日期以及这种特殊格式的其他信息:

/ * @(#)fdlibm.h 1.5 95/01/18 * /

(另见:http://www.google.com/codesearch?q=%22%40%28%23%29%22&hl=en&btnG=Search+Code

这与类似RCS的字符串“$ Id $”($ Header $等)非常相似(或者可能相关?)。 我认为“文件”命令行实用程序或类似工具会在源代码中查找这些“魔术”字符串,但事实并非如此。

是否有一个实用程序/程序(除了'grep'!)实际使用这些字符串前缀为“@(#)”?

2 个答案:

答案 0 :(得分:8)

那将是SCCS,一个中生代的修订控制系统。 the what command使用了这个神奇的字符串。

答案 1 :(得分:0)

“什么”(来自SCCS)确实是正确答案(感谢Jonathan)。我希望找到一个现代的跨平台版本的“什么”甚至可以用于二进制文件(如“strings xfile | grep ...”)。目前似乎“什么”通常只能在Solaris上找到。

这是一个例子......

$ cat foobar.c
/*
* @(#) foobar.c  9.04 (mn) 10/29/2009
*/
static const char * foobar = "@(#) some string";
int main(int argc, char *argv[]) { }

$ gcc foobar.c

$ what a.out  foobar.c
a.out:
         some string
        SunOS 5.10 s10_69 December 2004
foobar.c:
         foobar.c  9.04 (mn) 10/29/2009
         some string

$ strings a.out | grep '@(#)'
@(#) some string

ps:我尝试将此作为对Jonathan正确答案的评论发布,但源代码formatting didn't quite work out.