跨平台linux可用的printf_s之类的_s安全版函数
自动vc2005开始,微软力推_s安全版函数以取代不安全的标准非_s版函数,如果你不用安全版,VC会报一大堆难看的warning。现在问题来了,使用了_s版函数后,VC2003不能用了,而且想要把程序拿到linux也无法运行,你可以费劲巴拉的再改回非_s版,但是太费劲了,而且warning又来了,而且真的可能会不安全哦(高手忽略)。
有个简单的办法来解决这个问题,就是使用宏。在你的程序里定义一个macro.h文件,
#ifdef WIN32
#if _MSC_VER <1400 //vc2003
#define _DO_NOT_HAVE_S //这个宏表示没有_s版,就是vc2003或者linux
#else
#endif //VC2003
#else //LINUX
#define _DO_NOT_HAVE_S
#endif //WIN32
#ifdef _DO_NOT_HAVE_S //如果没有_s版的函数,则启动如下的替换宏
//#define sprintf_s(buffer,size,format, ...) sprintf(buffer,format,__VA_ARGS__)
#include <stdio.h>
#include <stdarg.h>
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format ,...); //这个比较特殊,需要真的去实现
#define memcpy_s(dest,num,src,count) memcpy(dest,src,count)
#define fprintf_s fprintf
#define _strdate_s(buf,num) _strdate(buf)
#define strcat_s(dest,num,src) strcat(dest,src)
#define fopen_s(pf,name,mode) *pf=fopen(name,mode)
#define strncpy_s(dest,num,src,count) strncpy(dest,src,count)
#define localtime_s(tm,time) *tm=*localtime(time)
#define _strdup strdup
#else
#define mkdir(pathname,mode) _mkdir(pathname)
#endif
上面的sprintf_s比较特殊,需要如下的macro.cpp里的实现
#ifdef _DO_NOT_HAVE_S
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format ,...)
{
va_list ap;
va_start(ap, format);
int res = vsprintf(buffer, format, ap);
va_end(ap);
return res;
}
#endif
跨平台及VC版本都OK
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
#wget http://ftp.isc.org/isc/bind9/9.6.1-P1/bind-9.6.1-P1.tar.gz
#tar zxvf bind-9.6.1-P1.tar.gz
#cd bind-9.6.1-P1
#./configure --prefix=/usr/local/named --enable-threads --disable-openssl-version-check --disable-ipv6
#make && make install
#cd /usr/local/named
#sbin/rndc-confgen > e ......
/ 根目录
/bin 常用的命令 binary file 的目錄
/boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内
/boot/grub/menu.lst GR ......
工作中用到gdb来分析程序崩溃生产的core文件问题:
这里从网上查来的一个命令用法:
1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
  ......
昨天在一个客户环境,由于空间紧张,删除了一个文件,遇到了文件句柄与空间释放的问题,记录一下。
在系统上,临时表空间扩展到了32G,我新建了一个临时表空间
,并切换了数据库设置:[oracle@corde tdb]$ ls -sort
total 35101212
51264 -rw-r----- 1 oracle 52429312 Oct 20 08 ......