linux
avagrant158
这个作者很懒,什么都没留下…
展开
-
跨平台linux可用的printf_s之类的_s安全版函数
自动vc2005开始,微软力推_s安全版函数以取代不安全的标准非_s版函数,如果你不用安全版,VC会报一大堆难看的warning。现在问题来了,使用了_s版函数后,VC2003不能用了,而且想要把程序拿到linux也无法运行,你可以费劲巴拉的再改回非_s版,但是太费劲了,而且warning又来了,而且真的可能会不安全哦(高手忽略)。有个简单的办法来解决这个问题,就是使用宏。在你的程序里定义一原创 2009-10-28 11:03:00 · 1993 阅读 · 0 评论 -
there are no arguments to '***' that depend on a template parameter, so a declaration of
linux下会出现如下错误:there are no arguments to '***' that depend on a template parameter, so a declaration of '***' must be available错误:‘×××’ 的实参不依赖模板参数,所以 ‘×××’ 的声明必须可用需要在×××之前增加范围标识,参考http://gcc.gn转载 2012-01-17 14:41:07 · 2946 阅读 · 0 评论 -
const变量被编译器自动优化为const引用变量,delete危险
T* pb=new T();const T a=*pb;//a 被编译器优化为const T& a=b;delete pb;//错误原创 2011-08-03 10:12:12 · 244 阅读 · 0 评论 -
linux静态库AR陷阱,导致新程序无效
在使用ar -ru命令时,静态库中的老的目标文件是不会被删除的,当新目标文件不能覆盖老目标文件时(比如文件名变更),则老程序和新程序同时存在,此时可执行文件连接该静态库时,或许会使用老程序,或许使用新程序,连接器没有警告或异常,而且不同的可执行程序使用新老版本也不固定。解决办法是在ar -ru之前,一定要先rm掉静态库。原创 2011-04-14 13:13:00 · 359 阅读 · 0 评论 -
编写跨平台程序的关键,C/C++中的内置宏定义
<br />分两部分:<br />操作系统判定:<br />Windows: WIN32<br />Linux: linux<br />Solaris: __sun<br />编译器判定:<br />VC: _MSC_VER<br />GCC/G++: __GNUC__<br />SunCC: __SUNPRO_C和__SUNPRO_CC原创 2011-04-02 13:54:00 · 1551 阅读 · 0 评论 -
关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
<br />32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样):<br /> <br /> linux64 windows64 linux32 windows32<br />char 8 8 8原创 2010-11-06 20:22:00 · 1769 阅读 · 0 评论 -
更换动态库后一直报内存错误
<br />找了一个小时没有找到问题所在,一直在stl里报内存错误,基本不可调试,运行时说glib发现内存错误free什么什么的一大堆。valgrind也报一大堆错误,但是所指的位置看不出什么毛病。<br />原来问题出在一个静态库上,程序依赖一个so和一个a,而那个a又依赖这个so,so换了之后程序重编过,但是a没有重编,导致了这个问题,重编a解决问题。原创 2010-06-24 17:37:00 · 261 阅读 · 0 评论 -
Linux下如何更改已保存的CVS用户名
find . -regex .*CVS/Root -print0 | xargs -0 perl -p -i.orig -e "s/原用户名:原密码/新用户名:新密码/;" 参考http://203.208.39.132/search?q=cache:bQ2YzDTKKzYJ:www.worldforge.org/doc/faq/cvs+cvs+change+user&cd=1&hl=zh转载 2009-12-10 13:37:00 · 502 阅读 · 0 评论