LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 915|回复: 7

大家帮我解决个问题:-)

[复制链接]
发表于 2006-10-13 17:23:38 | 显示全部楼层 |阅读模式
把文件的内容
#ifdef WIN32
        SOCKET sock = abc;
#else
        int  sock = -1;
#endif
#ifdef WIN32
        SOCKET sock = def;
#else
        int  sock = -1;
#endif
变成
        SOCKET sock = abc;
        SOCKET sock = def;
用vim本身能实现么?
或者用grep能做到么?
发表于 2006-10-13 18:00:24 | 显示全部楼层
试试 "gcc -DWIN32 -E test.c "
需要再处理一下, 将多余的信息除掉.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-13 18:08:24 | 显示全部楼层
嗯。。。不错,不错,这是个好主意。。
应该想到,编译器有这种功能。。。。
大家集思广益吧,看看还能有什么做法
谢谢pointer的回答
回复 支持 反对

使用道具 举报

发表于 2006-10-13 18:12:18 | 显示全部楼层
不知道我理解对不?
grep 'SOCKET' oldfile>newfile
回复 支持 反对

使用道具 举报

发表于 2006-10-13 19:53:10 | 显示全部楼层
呵呵,楼上,我起先也以为是这个意思。

unifdef -DWIN32 xxx.c

我是fans的seamonkey。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-14 12:29:47 | 显示全部楼层
Post by troll
呵呵,楼上,我起先也以为是这个意思。

unifdef -DWIN32 xxx.c

我是fans的seamonkey。


你真是无处不在阿。。。呵呵

其实,基本上现在的主要方法都是围绕cpp这个预编译命令。。。。

能用正规表达式替换来做到么?
回复 支持 反对

使用道具 举报

发表于 2006-10-14 16:08:48 | 显示全部楼层
vim:
:g/^[^S]/d
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-16 17:20:53 | 显示全部楼层
最新想出的解决方法
:%s/#ifdef WIN32\_s\(\_.\{-}\)\_s\(#endif\|#else\_.\{-}#endif\)/\1/g
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表