哥哥学C++很生气。
下面一段话:纯是扯淡。。那时候刚从Java跳到C++,对C++的一切还不是很熟悉。
现在的理解是:用宏定义来替代namespace,是为了兼容不同的编译器。如果没有的话,不支持namespace的编译器就会报错,主要在一些跨平台的类库或者应用程序中出现。
刚才在研究STL的底层代码。突然发现,有条语句很诡异,像是故意躲在角落里,着实吓了我一跳。
_STD_BEGIN //就是这句,相当突兀
template<class _Ty,
class _Ax = allocator<_Ty> >
class vector;
template<class _Ty,
class _Ax = allocator<_Ty> >
class vector;
F12转到定义处,才发现:
#define _STD_BEGIN namespace std {
#define _STD_END }
#define _STD ::std::
#define _STD_END }
#define _STD ::std::
于是哥生气了。直接写成namespace std 能死人吗? 能让活人看不懂吗? 幸好还有个F12,要不然哥不被你丫整死。。