zoukankan      html  css  js  c++  java
  • 软件测试中不可忽视的 Warning

    这篇博客旨在强调软件测试开发过程中Warning的重要性

    软件开发过程中,软件开发人员常常重视error而忽视warning,然而warning却能为我们提供更为重要的关于软件日后稳定性健壮性的信息

    下面我就以一个小例子来和大家分享我对warning的理解

    //test.c

    #include<stdio.h>
    int main(void)
    {

    char buff[10];
    memset(buff,0,sizeof(buff));
    gets(buff);
    printf(" The buffer entered is [%s] ",buff);
    return 0;
    }

    这是一点简单的c语言程序,linux下运行后功能是让用户输入一串字符床并输出显示用户的输入信息。但编译时会出现两个warning

    warning如下:

    • 第一个warning

    incompatible implicit declaration of built-int function 'memset’是说函数memset没有明确定义,那么就隐试定义。编译时库里有这个函数就不会出错。然而这样做是危险的,例如库里的函数不是的想要的函数,他实现的功能与你想要的不一致那么出错就很难发现也很难理解,所以函数都应该被明确定义。

    对于此例添加#include<string>.h 便可消除warning

    • 第二个warning

    'gets' is deprecated gets函数已经被弃用原因是 

    如果你有这样的code:

    char s[10];
    gets( s );

    当程序运行的时候你输入了超过10个字符,你就会是buffer溢出,造成undefined behaviour。gets() 函数不能防止你输入数量越界,因此gets()函数给弃用。用来代替的可以用fgets()函数, 这个函数可以限制你的字符输入数量,防止buffer溢出:

    char s[10];
    fgets( s, 10, stdin );


    //test.c

    修改后的code:

    #include<stdio.h>

    #include<string.h>
    int main(void)
    {

    char buff[10];
    memset(buff,0,sizeof(buff));
    fgets(buff,10,stdin);
    printf(" The buffer entered is [%s] ",buff);
    return 0;
    }

    编译正常,没有warning。

    谨以此片博客为大家提示warning的重要性,以及在保证软件稳定性健壮性是的重要性,希望对大家以后的编程中有所帮助。

  • 相关阅读:
    随想13:论“善”字
    Nginx做前端Proxy时TIME_WAIT过多的问题
    HTTP的长连接和短连接
    nginx长连接的问题
    Tomcat性能参数设置
    Nginx1.1.4+ 对后端机器的长连接特性
    HTTP长连接200万尝试及调优方法
    NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64
    CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历
    rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)
  • 原文地址:https://www.cnblogs.com/EDzhang/p/4337847.html
Copyright © 2011-2022 走看看