相关疑难解决方法(0)

任何测试扩展C/C++ #define宏的实用程序?

看起来我经常花太多时间试图让#define宏完全按照我的意愿去做.我将在下面发布我目前的困境,任何帮助表示赞赏.但真正更大的问题是,是否有人可以推荐的任何实用程序,以快速显示宏实际上在做什么?如果我看到错误的话,即使是缓慢的试错过程似乎会更快.

目前,我正在从我制作的DLL动态加载一长串函数.我设置的方式,函数指针与导出的函数具有相同的nanes,并且用于原型化的typedef具有相同的名称,但具有前置下划线.所以我想使用一个define来简化长长的函数指针列表的赋值.

例如,在下面的代码语句中,'hexdump'是typedef'd函数点的名称,也是函数的名称,而_hexdump是typedef的名称.如果GetProcAddress()失败,则递增失败计数器.

if (!(hexdump = (_hexdump)GetProcAddress(h, "hexdump"))) --iFail;
Run Code Online (Sandbox Code Playgroud)

所以,假设我想用宏来替换上面的每一行,就像这样......

GETADDR_FOR(hexdump )
Run Code Online (Sandbox Code Playgroud)

那么这是迄今为止我提出的最好的.它不起作用(我的//注释只是为了防止消息中的文本格式化)...

// #define GETADDR_FOR(a) if (!(a = (#_#a)GetProcAddress(h, "/""#a"/""))) --iFail; 
Run Code Online (Sandbox Code Playgroud)

而且,虽然我很了解我已经犯下了什么愚蠢的错误,但是通过简单地插入我的宏,这将使我的日子能够显示出我的方式错误.

c++ macros c-preprocessor

34
推荐指数
4
解决办法
2万
查看次数

如何逐步看宏扩展?

似乎Eclipse允许用户通过按F2"逐步查看扩展".

我喜欢这个很棒的功能.但我可以用gccclang(或任何工具)做同样的事情吗?

-E选项使所有宏完全展开.所以我没有找到任何替代方法来逐步扩展宏.

Eclipse很大.我希望我不需要在任何地方安装它并一直启动它.

c c++ gcc compiler-options c-preprocessor

9
推荐指数
1
解决办法
680
查看次数

标签 统计

c++ ×2

c-preprocessor ×2

c ×1

compiler-options ×1

gcc ×1

macros ×1