每个C文件末尾的“__SRCVERSION”函数的用途是什么?

时间:2015-05-20 21:09:51

标签: c

我正在研究基于Unix的内核的源代码。我注意到每个源代码文件(.c或.h)的最后一行是具有以下格式的特定行:

__SRCVERSION( "$URL: ... $ $Rev: 219996 $" )

URL指向同一文件的Web地址。我想知道这意味着什么,它实际上是什么意思?如果我从所有源代码文件中删除这一行,会不会有任何问题?

1 个答案:

答案 0 :(得分:2)

这样的宏通常用于在编译时将版本信息嵌入到二进制文件中。从source control system with appropriate rules中取出时,它们可以自动更新。删除它们不应该造成任何伤害,但是你将失去能够搜索二进制文件以识别使用哪个版本的源文件进行编译的好处。

正如@Keith Thompson所说,也可以将您的构建配置为不嵌入信息。下面是从here获取的宏定义的示例(不同的系统可能有不同的定义)。您可以看到它使用__USESRCVERSION定义来决定使用哪个版本的__SRCVERSION宏:

#ifndef __USESRCVERSION
#define __SRCVERSION(id)
#else /* __USESRCVERSION */

#ifdef __QNXNTO__

#if defined __SRCVERSION
#undef __SRCVERSION
#endif /*__SRCVERSION */

#define __SRCVERSION(id) \
    __asm__(".section .ident,\"SM\",@progbits,1"); \
    __asm__(".asciz " #id); \
    __asm__(".previous");

#endif /* __QNXNTO__ */

#endif /* __USESRCVERSION */