有什麼樣的性病的自動調試版本:在G ++ STL,如果矢量不是我怎麼能做到一個?
我想什麼是我克至指定調試參數++調用例如:
g++ -D DEBUG_ main.cpp
當此參數定義我希望所有我的std ::向量accesing元素時檢查其boundarys中,當使用vector :: at()時。
當省略參數時,我希望所有向量的行爲就像使用普通[]運算符一樣,這意味着對於邊界檢查來說性能沒有「浪費」。我聽說VC++做了這樣的事情。所以我的問題是如何對此使用g ++?
有什麼樣的性病的自動調試版本:在G ++ STL,如果矢量不是我怎麼能做到一個?
我想什麼是我克至指定調試參數++調用例如:
g++ -D DEBUG_ main.cpp
當此參數定義我希望所有我的std ::向量accesing元素時檢查其boundarys中,當使用vector :: at()時。
當省略參數時,我希望所有向量的行爲就像使用普通[]運算符一樣,這意味着對於邊界檢查來說性能沒有「浪費」。我聽說VC++做了這樣的事情。所以我的問題是如何對此使用g ++?
你想要的標誌-D_GLIBCXX_DEBUG
更多的的libstdC++調試選項,可以發現:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.mode
在調試模式下,你可以有更多的斷言和檢查,但使用at()
或[]
它總是在你身邊。
at()
- 拋出out_of_bounds例外,[]
- 不要
,我也不會太在意性能的浪費使用'at'了'操作符[]'。 – chris
@chris:你可能不是,但我們中的一些人。 –