写跨平台软件注意的几点-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3977439
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类:

2007-10-10 09:24:35

1>. 不同数据类型的赋值问题。
eg1:
   int    a;
   unsigned char b;

   b = a;

以上代码在linux/unix下会自动转换, 但windows下会提示问题的(编译的时候把警告项设置了)。

eg2:
unsigned char     *po;
unsigned long     num;

 *po = num;

windows下编译的提示:
warning c4244: '=' : conversion from 'unsigned long ' to 'unsigned char ', possible loss of data

建议手工设置好类型强制转换:
eg:
    *po = (unsigned char)num;

===================================

2>. 不同数据类型的比较问题。
eg1:
    int     i;
    unsigned int t;

    for (i = 0; i < t; i )
    { ... }

在windows下编译会提示如下的问题:
warning c4018: '<' : signed/unsigned mismatch

在linux/unix下编译是没有任何问题的。

建议写成:
eg:
    for (i = 0; i < (int)t; i )
    { ... }

仔细想想(i < (int)t)这样写是有问题的,下面是个小的实例:
#include

int main(int argc, char **argv)
{
  int   i;
  unsigned int t;

  t = 0xffffffff;
  for (i = 0; i < t; i );

  printf("i = %d, t = x \n", i, t);

  return (0);
}
你可以在不同的平台下编译测试一下。加(int)和不加的区别是什么。

说实话这样写代码不是太好,如果你非要写成(int < unsinged int)时,那你一定确定你的循环中的unsigned int强制转换为int时不会出错了(当你的unsigned int小于0xefffffff时就不会出问题了)。

=================================
3>. 注意文件路径写法区别。

#ifdef _win32
#  include "abc\\testheader.h"
#else
#  include "abc/testheader.h"
#endif

应该还有很多注意的地方,目前就小节到这吧,以后慢慢学习。
阅读(2266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图