1. 在VC6中用了STL时,会出现了一堆的警告,google下原因:原来VC在编译模板代码的时候会将代码展开,所以虽然只写了个map<int, int>,但实际上在编译器看来,这个东西确是std::_Tree<int,struct std::pair<int const ,bool>,struct std::map<int,bool,struct std::less<int>,class std::allocator<bool> >::_Kfn,struct std::less<int>,class std::allocator<bool> >这个稀奇古怪的东西。很显然,代码中很普通的符号在编译器内部可能就会变得非常的怪非常的长,长得怪,编译器倒是不在乎的,但是VC6.0的编译器对长的符号就会报警告,说这玩意太长了,超过了255个字节,编译器要自动把这个符号裁减到255个字节。 虽然裁减了,但是绝大部分情况下都是没有问题的.
所以,就给在include <map>的前面,加上一句#pragma warning(disable: 4786),于是,满世界都清静了。(注:在.NET中已经不会出现这些警告。)
2. 在普通程序中使用MFC的类:习惯了MFC中各种方便的类,又不愿意带着那个笨重的框架,可以在文件头添加#include
,直接编译会报错,需要在Project Setting(Alt+F7)中的C/C++页中添加编译选项/MT。然后就可以放心的使用CString、CFile...
没有评论:
发表评论