3

可能重复:
GCC STL 绑定检查

在 g++ STL 中是否有类似 std:vector 的自动调试版本,如果没有,我该如何实现?

我想要的是在我的 g++ 调用中指定一个调试参数,例如:

g++ -D DEBUG_ main.cpp

定义此参数后,我希望我的所有 std::vector 在访问元素时检查它们的边界,就像使用 vector::at() 时一样。

当参数被省略时,我希望所有向量的行为就像使用普通的 [] 运算符一样,这​​意味着边界检查不会“浪费”任何性能。

我听说 VC++ 做了这样的事情。所以我的问题是如何使用 g++ 来做到这一点?

4

2 回答 2

8

你想要的标志是-D_GLIBCXX_DEBUG

libstdc++ 的更多调试选项可以在以下位置找到:

http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.mode

于 2012-05-14T13:38:19.970 回答
0

在调试模式下,您可以进行额外的断言和检查,但使用at()or[]它始终在您身边。

at()- 抛出 out_of_bounds 异常,[]- 不要

于 2012-05-14T13:40:07.457 回答