【发布时间】:2009-11-16 05:32:11
【问题描述】:
我正在考虑编写能够处理宏的 C 定义处理器的最佳方法。不幸的是,我没有想到任何聪明的东西。 它的行为应该与 C 中的完全一样,因此它处理如下表达式:
#define max(a, b) (a > b ? a : b)
printf("%d\n", max(a, b));
或者这个:
#define F 10
#define max(a, b) (a > b ? a : b)
printf("%d\n", max(a, F));
我知道 K&R2 的安装和查找功能,我还需要什么 替换括号内的文本? 有没有人有任何建议或一些伪代码? 我知道这是一项复杂的任务,但是,最好的方法是什么?
【问题讨论】:
-
C 内置宏系统有什么问题?还是用于其他应用程序?
-
为什么要使用这个?你可以用
gcc -E来查看预处理后的输出吗? -
绝对没有,我只是不会写和练习一样的简单版本,也不知道如何处理参数。
-
看看其他人是如何解决这个问题的:cabaret.demon.co.uk/filepp
-
那些宏定义很糟糕 - 在替换文本中的每个 'a' 和 'b' 周围使用括号。
标签: c macros c-preprocessor kernighan-and-ritchie