精华内容
下载资源
问答
  • 判断system函数返回值

    千次阅读 2013-01-25 14:59:35
    #include #include #include #include int main() { pid_t status = 0; status = system("mkdir a"); if (-1 != status && WIFEXITED(status) && (WEXITSTATUS(status) == 0))
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/wait.h>
    #include <sys/types.h>
    
    
    int
    main()
    {
            pid_t status = 0;
            status = system("mkdir a");
            if (-1 != status && WIFEXITED(status) && (WEXITSTATUS(status) == 0))
            {
                    printf("make dir successfully!\n");
            }
            else
                    printf("MAKE DIR ERROR\n");
            return 0;
    }


    展开全文
  • 函数:多返回值 //go:noinline func test(x int) (int, int) { return x + 1, x + 2 } func main() { a, b := test(100) println(a, b) } $ go build && go tool objdump -s "main\.main" test 函数...

    函数:多返回值

    //go:noinline
    func test(x int) (int, int) {
        return x + 1, x + 2
    }
    func main() {
        a, b := test(100)
        println(a, b)
    }
    
    $ go build && go tool objdump -s "main\.main" test
    

    函数提供多返回值。多返回值在语法上接近于 Python,在实现上方式上不一样。Python 多返回值实际上打包成一个元组返回,在语法上展开,元组是单个对象。Go 语言的确返回两个返回值,我们需要分配两个返回值区域内存。

    调用CALL main.test的时候,100参数进去MOVE $0x64, 0(SP),接下来分别从0x8(SP)0x10(SP)取了两次的数据,分别保存到0x20(SP)0x18(SP)。所以函数有多个返回值,调用的时候,首先参数是 100,两个空间用来保存两个返回值。

    函数:命名返回值

    //go:noinline
    func test() (x int) {
        x = 100
        return
    }
    
    $ go build && go tool objdump -s "main\.test" test
    

    内存同样由调用者分配,但被当作局部变量。

    命名返回值和参数非常类似,命名返回值

    展开全文
  • 调用一个函数后要检查函数的返回值,以决定程序是继续应用逻辑处理还是出错处理,这理应是一个常识,但在现实中,却存在大量不检查函数返回值的代码。既然是常识,但却得不到重视,这不能简单地说程序员不知道其危害...

    本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/258925

    调用一个函数后要检查函数的返回值,以决定程序是继续应用逻辑处理还是出错处理,这理应是一个常识,但在现实中,却存在大量不检查函数返回值的代码。既然是常识,但却得不到重视,这不能简单地说程序员不知道其危害性。相信读者也明白不检查函数的返回值其危害是什么,因此,也不打算举例说明其所带来的问题,而是试图去探究程序员为什么不按这一常识去做。

    要判断函数的返回值,不可避免地要面对一个问题 —— 出错了怎么办?这显然不是一个简单的问题,在这问题的背后可能是在问:在项目中一个错误如何表达?项目是否定义了出错处理的准则或机制?

    如果一个项目没有一种有效的方法表达一个错误,那么就会出现对于出错处理的混乱状况。当出现错误时,仅仅通过C库中已经定义了的那么几个错误码并不能有效地表达应用错误。之所以需要有效地表达各类错误,是因为针对不同的错误可能需要采用完全不同的出错处理方法。不同的错误可能收敛于几个错误类别,但还是存在一定程序的发散性。没有有效的方法去定义一个错误,势必会造成程序员在面对函数返回错误时需要进行大量的思考,其所带来的个人思考成本还是很高的,进而程序员干脆就不去考虑它。在《错误管理》一文中介绍了一种通过定义错误码表达错误的方法,项目中这种类似方法的存在,能大大地降低程序员个体在面对函数返回错误时的思考成本。从程序员的角度来说,如果项目没有一种明确的错误表达方式,且即使按其个人的想法进行错误处理也最终会进入一种混乱状态,也就是说考虑与否可能结局都是一样的,只是从一种混乱形式变成了另一种,这应当是程序干脆不进行出错处理的一个重要原因。

    一个项目光定义好了一种通用的方法去表达一个错误就好了吗?为了进一步说明问题,需要借助一定的项目实际来帮助继续分析。假设一个电信产品是进行电话呼叫处理的,在这个产品中的呼叫处理模块对于每一个用户电话连接的建立,都需要从DSP处理器上获取一个DSP通道(读者可以想到会有一个DSP通道管理模块存在于系统中)以对电话语音数据进行编解码工作,那么当DSP通道被用尽了以后呼叫处理模块该怎么办?显然,这里DSP通道用尽就是一种错误,如果这个错误被定义成了一个错误码ERROR_CP_NOCHANNEL,那进一步的问题是,这一错误出现时,呼叫出理模块应当采取怎样的处理呢?可能的做法有:
    1) 由于系统有一定的用户容量限制,DSP通道的用尽意味着用户数量超过了系统所能处理的最大用户数,因此,这种情形下即使出现了ERROR_CP_NOCHANNEL错误,也只需记录一个错误日志,并结束对这一用户的后续呼叫处理逻辑。或许,ERROR_CP_NOCHANNEL的出现严格地说不是错误。
    2) 虽然系统有最大用户数的限制,但通过程序中的统计变量可以确定,当前的用户数根本没有超过最大用户数。因此,ERROR_CP_NOCHANNEL错误的出现意味着系统有严重的资源泄漏,从而造成DSP通道不足,这次是真正的错误了。如果是这样又有两种出错处理方法。其一是直接对产品进行复位,如此一来,就解决了资源的泄漏问题,但其缺点也是明显的,即在复位时,本来正在通话的用户将会出现掉话的问题。其二,只是记录一个错误日志,然后终止对这一用户的后续处理,也不进行产品复位操作以保证当前正接通的用户能继续进行通话,系统的资源泄漏也不管,直到系统资源泄漏到不能提供任何一个服务为止再复位。

    从ERROR_CP_NOCHANNEL错误的可能处理来看,不是仅有错误码的定义就完事了,而是需要从应用的层面定义好每种(不一定是每个)错误出现时的处理逻辑是什么。这里所例举的呼叫处理错误,其实在一个产品中的任一个模块都可能存在相类似的问题,只是形式变了。而面对一个错误,其具体的应对方法往往需要考虑很多因素,有时面对的有可能是两难问题。如果一个项目没有定义好各类错误的大致处理思路,而是完全由程序员自己去思考,那还是会导致程序员的个体思考成本过高这一问题,而且没有统一出错处理思路的指导,不同程序员所做出来的出错处理方法有可能就会是相悖的,其结果就是另一种混乱局面出现了!另外,即使定义了项目的出错处理思路,那这些出错逻辑是放在哪里处理呢?是将其分散在程序的各模块呢?还是集中处理?如果是分散处理则有可能出现大量的冗余代码,且可能存在一定的困难。因为有些错误的处理,需要得到很多其它的信息,如果分散在程序的各处,那么意味着这些信息需要很大程度的公开,这会造成程序的结构出现一定的退化。笔者的观点是,究竟采用分散还是集中处理方式并没有绝对,但应当以集中出错处理为主。在后面笔者将会写一篇文章志门阐述出错处理方法,到时读者可以看到更为深入的一些内容。


    至此,程序员不按常识进行函数返回值的判断的深层次原因分析过了,那要解决这一问题显然不能通过将“判断函数返回值”这几个字通过使用初号字体打印出来并贴在程序员的办公桌显眼处这一方式加以解决。出错处理其实不是程序员的个人私事,而是项目的集体事。要根本解决它,应当从项目全局的角度去着手。以下几点项目组可以考虑去做:
    1) 从项目的层面定义好一个错误的表达方式是什么。通常,在C程序中需要定义错误码,而在C++中需要定义异常,当然在错误管理》一文中也介绍了可以通过将两者结合起来做以简化错误表达。
    2) 从项目的层面定义好各大类错误的处理思路和方法。另外,在项目团队中还要打造一种探讨出错处理思路和方法的氛围,这样更容易在团队中集思广义形成共识,从而为这些方法的实施铺平道路。
    3) 在设计层面提供一定的错误处理机制以帮助减少程序出错时的代码工作量,这能有效的促进程序员积极面对函数的错误返回值。

    无论如何,要形成一种勇于面对函数出错和积极思考出错处理方法的文化对于项目团队来说不是一件容易事,但却非常重要。另外,有这方面的意识比没有要好,重视比不重视要好,当然做比不做又要更好。


    展开全文
  • 代码: typeof "变量或者函数" === "undefined

    代码:

    typeof "变量或者函数" === "undefined"

    展开全文
  • 一开始也有点懵,后来才想明白 通常需要返回值判断是否正常执行吧 return 0代表正常,而我们通常也会定义各种错误码来代表不同的错误。返回其他的值对应不同的错误码来反映是什么错误。 我想这也是一种合理的解释...
  • #include<stdio.h> #include<math.h> void prime(int m) { int j,k; k = sqrt(m); for(j=2;j<=k;j++) if(m%j==0) break; if(j>k) printf("%d is a prime number\...
  • C中需要检验其执行是否成功的函数(检验返回值) 一、malloc() char *s =
  • bat函数调用 带返回值

    千次阅读 2019-07-27 12:37:00
    bat 脚本之 使用函数 摘自:... ...bat函数返回值 综述 Windows bat脚本是一种解释性的脚本语言,可以拿到做很多事情。对于稍简单的问题:比如通过注册表判断下档期机器的...
  • 函数中的返回值

    千次阅读 2019-06-12 19:30:26
    function fn (n,m) {//=>形参:入口 var total = 0;//=> total 私有变量 total = n+m; return total;//=>并不是把TOTAL变量返回,返回的是变量存储的值,返回的...实参:给形参传递的具体值 代表函数...
  • 学习-Python函数之函数返回值 judge.py """ 任务:创建一个函数 Number,函数的功能为判断一个整数是否为正数,如果是正数,返回 True,如果是不是正数, 返回 False。被判断的整数都是通过 input 获取。如果是正数...
  • 获取ajax中success函数中的返回值

    万次阅读 2019-07-01 15:16:24
    对于ajax,一般情况下我们都是在success函数中进行逻辑处理,但是在某些特定的时候我们需要在ajax外对返回值进行处理。 解决 1、async设置为false,也就是同步。 $.ajax({ url: ..., contentType: ...
  • 主要介绍一种提高嵌入式软件设计效率和代码质量的方法,该方法在使用实时操作系统μC/OSII进行嵌入式系统的软件设计时,通过对μC/OSII的系统函数的参数和返回值进行判断和处理,来提高嵌入式软件设计的效率和代码的...
  • 相比与 C、C++、Java 和 C#,多值返回是 Go 的一大特性,为我们判断一个函数是否正常执行(参考 第 5.2 节)提供了方便。我们通过 return 关键字返回一组值。事实上,任何一个有返回值(单个或多个)的函数都必须...
  • 在GDB调试时要进入下边该判断后边的函数,而m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen)的返回值是false,所以需要修改该函数返回值, -----------------------------------------------------------...
  • C语言如何不借助函数的返回值判断函数是否执行成功?
  • 我们把所有的获取对象封装到一个模版函数里面,但是有引入新的问题,因为有的函数有返回值,而且不同的函数返回值可能不一样,还有一些函数的返回值是空。所以我们先要实现一个获取函数返回值的功能,然后对于不同的...
  • python函数多个返回值

    万次阅读 2018-09-21 14:45:56
    python函数可以返回多个值吗?答案是肯定的。 比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标: import math def move(x, y, step, angle=0): nx = x + step * ...
  • system函数返回值判断

    千次阅读 2017-08-09 14:58:17
    Linux系统函数system使用及返回值判断方法,分3阶段:1.system函数是否正常调用;2.命令脚本调用操作是否正常;3.脚本是否正常运行,是否有报错;
  • 如何获取ajax中success函数中的返回值

    万次阅读 2018-08-20 14:52:34
    对于ajax,一般情况下我们都是在success函数中进行逻辑处理,但是在某些特定的时候我们需要在ajax外对返回值进行处理,这时我们只需要进行下面两个操作: 1、async设置为false,也就是同步; 2、在方法内ajax外设置...
  • const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。 const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++...
  • 函数出错会返回值

    千次阅读 2008-05-08 10:22:00
    一直只知道CreateFile出错时会返回INVALID_HANDLE_VALUE,今天看MSDN才...调用windows函数时,首先要检验传递给他的各个函数的有效性,然后再设法执行任务~windows对函数调用错误的返回值:VOID:运行基本不会出错。但
  • if判断后,将执行代码的最后一个表达式的值作为返回值返回 注意,这里不需要特意的去用return去将值返回val s13 = if (true) { "zhang" }
  • POJ第一题很简单就是A+B输出值,但是通过率只有一半,我想很多人都是代码版本问题,其中我遇到的就是C++的mian函数返回值为int型。由于之前写的时候喜欢用void返回类型,为此特意了解了一下C++的main函数传参和...
  • JS - 函数 - return返回值

    千次阅读 2018-06-20 09:40:54
    1.return语句function num() {  console.log(1);... //函数在此返回,后面的语句不再输出  console.log(2);  } num(); //输出结果 1 console.log(num()); //return返回结果给函数外部,当没有返回结果的...
  • 作者:新浪微博(@NP等不等于P)计算机学习微信公众号(jsj_xx)【全新改版之一:文章尾部支持“写留言”】【全新改版之二:”文章列表”里的历史文章支持链接方式阅读】【全新改版之三...然而,system函数也带来了判断...
  • open函数参数及返回值

    千次阅读 2013-10-10 23:44:02
    相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen  表头文件 #include #include #include  定义函数 int open( const char * pathname, int flags); int open( const char * pathname,...
  • 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 考查知

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 468,560
精华内容 187,424
关键字:

如何判断函数是否需要返回值