预编译器宏替换

一只弃狗 2013-05-20 10:22:31
谁帮忙给个简单的预编译器中“宏替换部分”的源代码。。。c或c++的。。谢谢了。
...全文
152 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
一只弃狗 2013-05-22
引用 11 楼 ksrsoft 的回复:
后面程序中的MAX换做100?是文件中的max换成100呢,还是什么代码判断啊 根据你的思路,是不是来个宏定义更合适
#deinfe max
#ifdef max 
....
#endif
就是说让你自己写个代码打开一个txt文件。查找文件中有没有宏替换如,#define max 100.没有就不用操作。有的话就将文件中所有其他max换作100。其实就是宏替换的具体实现。不用函数宏替换的,就简单值的宏替换就行
回复
一只弃狗 2013-05-22
引用 12 楼 ccrun 的回复:
[quote=引用 10 楼 u010472855 的回复:] 现在我自己想做个简单的预编译器,只包含“宏替换功能”。。求代码。 基本意思是:打开一个txt文件,查找有无宏替换命令行(如:#define MAX=100;),有就将后面程序中的MAX换做100;没有就不用操作。。。。没时间写,感觉不是很难。
那你的需求就有些复杂了,需要做代码格式化,然后语义分析等等……[/quote] 不用语意分析的,只要查找到被宏定义的,如max.就替换为100就行了
回复
ccrun.com 2013-05-21
回复
缘中人 2013-05-21
看了很久,才找出来,多了个分号啊!
回复
ccrun.com 2013-05-21
引用 2 楼 ksrsoft 的回复:

#define  msg(str)    ShowMessage(str);

msg("hello");
就拿这个例子来讲,应该改成:
#define  msg(str)    ShowMessage(str)
msg("hello");
#define  msg(str)    ShowMessage(str);
msg("hello")
注意细微差别。
回复
缘中人 2013-05-21

#define  msg(str)    ShowMessage(str);

msg("hello");
回复
ccrun.com 2013-05-21
引用 10 楼 u010472855 的回复:
现在我自己想做个简单的预编译器,只包含“宏替换功能”。。求代码。 基本意思是:打开一个txt文件,查找有无宏替换命令行(如:#define MAX=100;),有就将后面程序中的MAX换做100;没有就不用操作。。。。没时间写,感觉不是很难。
那你的需求就有些复杂了,需要做代码格式化,然后语义分析等等……
回复
缘中人 2013-05-21
后面程序中的MAX换做100?是文件中的max换成100呢,还是什么代码判断啊 根据你的思路,是不是来个宏定义更合适
#deinfe max
#ifdef max 
....
#endif
回复
一只弃狗 2013-05-21
现在我自己想做个简单的预编译器,只包含“宏替换功能”。。求代码。 基本意思是:打开一个txt文件,查找有无宏替换命令行(如:#define MAX=100;),有就将后面程序中的MAX换做100;没有就不用操作。。。。没时间写,感觉不是很难。
引用 9 楼 ccrun 的回复:
没明白你的意思。
回复
ccrun.com 2013-05-21
没明白你的意思。
回复
一只弃狗 2013-05-21
引用 5 楼 ccrun 的回复:
我是要自己写给预编译器,简单的。。缺个对宏替换的实现。
回复
一只弃狗 2013-05-21
引用 5 楼 ccrun 的回复:
我是要自己写给预编译器,简单的。。缺个对宏替换的实现。
回复
一只弃狗 2013-05-21
我是要自己写给预编译器,简单的。。缺个对宏替换的实现。
回复
一只弃狗 2013-05-20
自顶。。。。。。
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2013-05-20 10:22
社区公告
暂无公告