- 论坛徽章:
- 0
|
比如,linux下那么多软件,很少有用c++写的(除了qt相当的那一堆)
c++经常是抛异常,在你并不是很了解你所使用的函数库,而你所用的函数库又引用了其它的函数库,最后引用很多层,有一个内层的异常抛出来了,难以定义是哪里出的问题。
如果是C的库,一般会直接输出个日志消息,告诉你在哪个文件,每几行,出什么错。
至于出错, 比如C语言函数,应该是返回一个char *的,如果返回值是NULL,那就出错。
换成C++,应该是返回string, char*是能转换成string的,但是,如果值为0,就会bad_alloc异常了。
char *p_str;
string str=p_str;
(如果p_str为0, 招出异常,这个东西我开始就不知道,被害苦了)
至于C++出现奇怪的错误,那就更恶心了,
我出现过这样的错误:
namespace hml{
template<typename T>class vector;
typedef vector<float> vfloat;
}
using namespace hml;
void test_func( vfloat x); 编译失败
void test_func( vector<float>); 编译成功
如果把那个namespace去掉,居然就能成功。。。灰常搞笑的错误,这类错误我还见过很多,原因就是nvcc这个编译器的事情。 只能说,很多C++里的东西,换个编译器就不行了。 |
|