我们尝试在二进制对象中嵌入 what 字符串,以便我们可以看到已部署的可执行文件或共享库的版本号。通常我们将标准 CVS Id 信息嵌入到这个 what 字符串中。例如,我们可能嵌入:
const char cvsid[] = "@(#)OUR_TEAM_staging_remap_$Revision: 1.30 $ $Name: $";
在 C 代码中。
从人(1)什么:
what 实用程序在每个文件名中搜索出现的模式 @(#),SCCS get 命令(请参阅 sccs-get(1))替换了 @(#) ID 关键字,并打印出 ", >, NEWLINE、\ 或 NULL 字符。
该变量只有一个实例,并且从未被引用。有人建议这可能会被编译器优化掉。
多年来,我一直在 C 和 C++ 以及各种编译器中使用这种技术,但我还没有看到什么字符串被优化掉了。
任何人都知道为什么它们没有被优化掉?