kmwang
小有名气
小有名气
  • 铜币0枚
  • 威望0点
  • 贡献值0点
阅读:766回复:2

mumu,给你出道编译方面的题。

楼主#
更多 发布于:2001-11-18 22:32
按下面的例子,提取所有c/c++头文件和源文件定义和变量的信息。
如:元程序如下
class a {
public:
a();
~a();
protected:
int i;
void f(int x);
};
void main()
{
int x;
a f;
{
int x = 0;
a.f();
{
int l;
}
}
}
结果。
name, type, params, line

::a, class, none;
::a::a, function | public | member, a::a();
::a::~a, function | public | member, a::~();
::a::i, int | protected | member, none;
::a::f, function | protected | member, none;
::main, function | var, void main();
::main::x, int | var, none;
::main::f, a | var, none;
::main::#::x, int | var, 0;
::main::#::#::l, int | var, none;

因为不好数数,所以行数没写出来。用Lex实现,速度要快,结果放到map里面。type是一个结构,有类型,访问控制,类型名(string)等。
可以对有错误的代码进行扫描,尽可能获得更多的信息。
kmwang
小有名气
小有名气
  • 铜币0枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2001-11-20 21:54
Re:Re:mumu,给你出道编译方面的题。
这题并不难,你可以用g++里的lex文件改一下。
rpm可以到www.rpm.org查一下它的压缩和存档格式。压缩不是flat就是bz2,存档可能是cpio,把cpio还要移植过来。
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
2C#
发布于:2001-11-19 10:35
Re:mumu,给你出道编译方面的题。
比较复杂,我看书先。:D

还是先请教先生吧:
如果自己想做个2wins版的rpm开包工具,要从那里入手呢?(尚未看懂原码)

另外,做跨平台的程序有什么经验可谈呢?
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
游客

返回顶部