易截截图软件、单文件、免安装、纯绿色、仅160KB

跨平台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


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送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 ......

Linux下BIND9.6配置

#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 ......

linux目录架构


/       根目录
/bin         常用的命令   binary   file   的目錄
/boot       存放系统启动时必须读取的档案,包括核心   (kernel)   在内
          /boot/grub/menu.lst       GR ......

linux ulimit用法简介

工作中用到gdb来分析程序崩溃生产的core文件问题:
这里从网上查来的一个命令用法:
1,说明:
      ulimit用于shell启动进程所占用的资源.
      2,类别:
      shell内建命令
      3,语法格式:
   ......

Linux / Unix 下文件删除、句柄 与空间释放问题

昨天在一个客户环境,由于空间紧张,删除了一个文件,遇到了文件句柄与空间释放的问题,记录一下。
在系统上,临时表空间扩展到了32G,我新建了一个临时表空间
,并切换了数据库设置:[oracle@corde tdb]$ ls -sort
total 35101212
   51264 -rw-r-----  1 oracle    52429312 Oct 20 08 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号