【发布时间】:2011-03-02 11:13:34
【问题描述】:
似乎我经常花费太多时间来尝试让#define 宏完全按照我的意愿行事。我将在下面发布我当前的困境,并感谢任何帮助。但实际上更大的问题是是否有人可以推荐任何实用程序来快速显示宏实际在做什么?如果我能看出问题所在,即使是缓慢的试错过程似乎也会变得更快。
目前,我正在从我制作的 DLL 中动态加载一长串函数。按照我的设置方式,函数指针与导出的函数具有相同的名称,用于原型化它们的 typedef(s) 具有相同的名称,但带有前置下划线。所以我想用一个define来简化一长串函数指针的赋值。
例如,在下面的代码语句中,'hexdump'是一个typedef的函数点的名称,也是函数的名称,而_hexdump是typedef的名称。如果 GetProcAddress() 失败,则失败计数器递增。
if (!(hexdump = (_hexdump)GetProcAddress(h, "hexdump"))) --iFail;
假设我想用一个宏替换上面的每一行,就像这样......
GETADDR_FOR(hexdump )
嗯,这是迄今为止我想出的最好的。它不起作用(我的 // 注释只是为了防止消息中的文本格式)...
// #define GETADDR_FOR(a) if (!(a = (#_#a)GetProcAddress(h, "/""#a"/""))) --iFail;
再说一次,虽然我很高兴能深入了解我犯了什么愚蠢的错误,但如果我有一个实用程序,只需插入我的宏,就可以向我显示我的方式错误。
【问题讨论】:
-
你用的是什么编辑器?
-
赞成,但希望它是一个 IDE ;-)
标签: c++ macros c-preprocessor