win32移植到linux技巧及注意:一

本文分享了将win32代码移植到linux过程中遇到的字符串格式化、拷贝及编码转换的问题,强调了snprintf与sprintf_s的区别、strcpy_s与strncpy的不同,以及GCC默认宏定义和参数类型匹配的重要性。通过实例探讨了解决方案,适合初学者借鉴。
摘要由CSDN通过智能技术生成

1、技巧:

1.1、格式化字串

    在C/C++的天下里除了使用STL的string外,最常用的就是char数组+sprintf()来格式化字符串了,作为笔者更喜欢用char + sprintf()来完成一些字串格式化的工作。sprintf有一个毛病就是不去检测目标char数组长度是否能存放我们期望的字串,经常导致程序崩溃。因此C标准库提供了snprintf来解决,但是两个平台名字竟是不一样的,windows下的为sprintf_s,为了统一两者的差异,我们可以定义下面的宏来解决。

#ifndef _snprintf
#if defined WIN32 || defined WIN64
#define _snprintf sprintf_s
#else
#define _snprintf snprintf
#endif
#endif

 1.2、拷贝字串

         同样的拷贝字符串在两个平台下名字也不一样。windows下为strcpy_s(),linux下为strncpy(),且这两个函数的参数顺序不一样,所以必须定义带参数的宏来解决。笔者通常不用而是使用_snprintf(des,size,"%s",src)来实现拷贝,这是恶趣味。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值