调试宏可能需要很长时间.我们最好避免使用它们,除非在非常罕见的情况下,常量,函数和模板都不能达到我们想要的效果.
什么是罕见的情况?
我偶然发现了一个我最初无法解释的奇怪行为(见ideone):
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::cout << "Reference : "
<< (void const*)"some data"
<< "\n";
std::ostringstream s;
s << "some data";
std::cout << "Regular Syntax: " << s.str() << "\n";
std::ostringstream s2;
std::cout << "Semi inline : "
<< static_cast<std::ostringstream&>(s2 << "some data").str()
<< "\n";
std::cout << "Inline : "
<< dynamic_cast<std::ostringstream&>(
std::ostringstream() << "some data"
).str()
<< "\n";
}
Run Code Online (Sandbox Code Playgroud)
给出输出:
Reference : 0x804a03d
Regular Syntax: some data
Semi inline : some …
Run Code Online (Sandbox Code Playgroud)