| Wei 的个人资料Truman's world照片日志列表 | 帮助 |
|
3月21日 [转帖]linux下引入hash_map头文件 因为hash_map以前不属于标准库,而是后来引入的。所以在windows下需要使用stlport,然后在setting中加入Additional library path。 在linux下使用gcc的时候,引入<hash_map>,使用的时候也说找不到hash_map,而这种后来引入标准库的有两种可能: 一种是它被放在了stdext名空间里,那么就要使用using namespace stdext引入该名空间并#include <hash_map>; 另一种可能就是它被放在标准库的ext目录底下,这时就仍旧需要使用属于std名空间,这时你的源文件应当#include <ext/hash_map>; 如果不知道是哪一种,就需要自己查一下,切换到c++库目录下:
然后使用grep命令:
查看hash_map在哪个头文件中。 找到后进去看一下就知道它到底被包含在哪个命名空间中了。 经过我的实际测试,调用方法是:(g++ 3.4.6) #include <ext/hash_map> using namespace __gnu_cxx; [转帖]跨OS程序开发经验小汇编 1. 文件与目录的大小写以及路径分隔符的差别。
windows下不区分大小写,路径分隔符一般使用"\";linux下区分大小写,路径分隔符使用"/"。 2. itoa()函数在linux下并不存在。 所以使用类似sprintf();之类的函数是个不错的替代。(为什么说是类似函数,看下面一条啦) 3. _snprintf()与_vsnprintf()的差别。 sprintf()不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf()。
例如,要把c2字符产write给c1,比较安全的用法:
如果在write之前主动检查一下c2的长度再申请c1的空间当然是最好的。 4. 在linux下并不存在std::exception(char*),可以使用logic_error类型代替exception。 5. 尽量使用STL与标准C库,并且要按照标准C++语法来写程序。 比如这种用法list< type1<T0> >::iterator iter;在windows下的编译器下没有编译错误;但在linux下,就需要在前面增加typename才能顺利编译通过。 6. 在源文件最后多加一个或几行的空行,以免蹦出警告:"no newline at end of file"。 7. windows中对ini文件进行操作的所有函数在linux下都没有对应函数。 建议自己写一个操作ini文件的类,在STLChina上有一个使用stl制作这种类的原理介绍和一小段代码片段,自己扩充一下。 8. SOCKET对象集要使用fd_set,不要使用FD_SET。 9. stricmp()函数,在linux下用strcasecmp()函数替换。 10. 在linux下不存在INVALID_SOCKET、INVALID_HANDLE_VALUE、SOCKET_ERROR、MAX_PATH、INFINITE、STILL_ACTIVE等宏定义。 11. 参数要求为char*的时候别忘了给传进去的string加一个.c_str()函数。 12. linux下不存在目录操作时要包含的direct.h与io.h头文件,而要包含相应的unistd.h与fcntl.h头文件。 13. filelength()函数在linux也不存在,可以通过fstat()函数来替代。 使用文件与目录操作函数,不要使用类似_access带下划线的函数,取而代之有access函数可以通用。 14. #prgram once预编译指令在linux下并不起作用,请使用以下标准方式来解决头文件多次包含问题:
15. hash_map出现在后期版本的stl库,为兼顾hasp与tree map,请可以通过以下宏来解决:
16. 为了区别不同OS,一般可用的几个宏有:WIN32,__linux__,需要使用与OS相关的内容,请一定用开关来写。 17. 对于界面操作部分代码,一定要把它与程序逻辑核心代码用宏分开来,这样的代码才好移植,不要交错。 18. 不要假定可执行文件一定有如.exe的扩展名。 19. 在父类中用typedef定义的类型,在子类并不能直接使用。 3月17日 I want coffee!!!天杀的狂犬疫苗!!!各位医学界的精英们(比如美国的PH.D 亲爱的Phenix小姐),你们给我找点理论支持呗,为啥注射狂犬疫苗期间不让喝咖啡啊!!!
不让喝酒不吃辣我也就忍了,不喝咖啡太难受了。今天一进实验室就闻到一股浓郁的咖啡的香味,NND!
3月19号最后一针,然后就解放了 3月7日 签证被Check了出国开会的B1签证也会被Check!是不是最近的击毁卫星事件弄得?或者是因为哈工大的国防科工委的牌子让老美放心不下?
不懂,反正是要等2到3周。NND,要是3周的话,这次会议就不用参加了。 |
|
|