但是,如果这对您不起作用,那么我认为您应该不求助于对 C 代码的完整解析。相反,您可以做一些简单的事情,比如将文件的私有(private)部分放在 //PRIVATE 和 //END-PRIVATE 等注释之间。然后你可以使用这个 ruby删除私有(private)部分的脚本:
#!/usr/bin/ruby
# remove_private.rb: Removes all lines between "PRIVATE" and "END-PRIVATE"
#
# Usage 1, output to STDIO: cat filename.c | ruby remove_private.rb
# Usage 2, output to STDIO: ruby remove_private.rb filename.c
# Usage 3, in-place editing of file (and creating a backup): ruby -i.bak remove_private.rb filename.c
while line = ARGF.gets
unless (line =~ /PRIVATE/)..(line =~ /END-PRIVATE/)
puts line
end
end
这利用了 ruby 的一些神奇而方便的特性来使代码简短,但我认为它比完整的 C 解析器更容易调试和维护。此外,开发人员可以在处理代码时轻松查看哪些函数是私有(private)的。对于我正在从事的项目,我做了一些与此非常相似的事情,我们想要发布 Makefile 的一部分而不是整个项目。也许您可以使用贵公司最喜欢的脚本语言重写它。