1
3
除了上面所有正确的答案:我通常做的是显示混合显示(C+组件)。这显示了真正发生的事情。即使您不是底层程序集的专家,它也给出了发生什么情况的一个概念(即它是一个微不足道的替换还是一个复杂的循环)。此外,它还将提供更多进入职能部门的机会。例如,如果宏是
调试器将显示类似 循环和使用的变量类型)。您可以使用宏定义作为参考来理解它。
这提示变量i和j用于调用函数foo_func。 如果您使用VisualC++,它将允许您进入从宏(F11)调用的函数,而不是单独的语句。 |
2
2
宏是由预处理器编译的,因此编译器将无法生成调试信息来单步执行宏。 |
3
2
长回答。不。 您可以生成在编译器选项中展开的宏的完整列表。它可能会有所帮助,但不会提供调试器功能 |
4
2
可能我的答案对VC++用户没有帮助。在Unix上,我执行如下操作:
即,对程序进行预处理并重新格式化。 |
5
1
据我所知,唯一可以进入宏的调试器是不工作的(Softice)。很好的例子说明为什么你不应该写50行宏,真的。所以,总的来说……祝你好运。 |
6
1
使用宏时,就调试器而言,宏后面的代码将全部扩展到同一源代码行。调试器会看到我的_macro(),并处理这一行,不管宏中有多少代码。 在C++中,模板可以完成宏所能完成的大部分工作,但是它们的工作效率更高,更优雅。因为它们是语言的真实组成部分,所以您也可以使用调试器介入它们!例如:
注意:find()当然是一个标准的库函数,但我编写这个函数只是为了将其与宏进行比较,以演示如何调试它。更不用说宏版本还有很多其他问题。经验法则:尽可能避免宏来编写代码! |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |