zoukankan      html  css  js  c++  java
  • 使用宏需要注意的地方


    DDK提供了大量的宏。在使用这些宏的时候,要注意一种错误的发生,
    这就是"侧效"(Side Effect)
    宏一般由多行组成,如下面的形式,其中的"\"代表换行

    #define PRINT(msg) KdPrint(("====================\n"));\
        KdPrint(msg);\
        KdPrint(("===================\n"));

    在C语言中规定,for或者if语句块中的内容如果只是一句,
    可以省略掉{}。如:

    if(bRet)
    {
        Foo();
    }
    //等价于
    if(bRet)
        Foo();

    但如果Foo是宏而非函数时,就会产生逻辑错误,如:

    if(bRet)
        PRINIT(msg);
    //等价于
        if(bRet)
            KdPrint(("====================\n"));
            KdPrint(msg);
            KdPrint(("===================\n"));

    这明显和我们的想法不一致。产生这样的错误,称为"侧效"错误。
    解决这个问题,有两个办法。
    (1)对于if、while、for这样的语句,不省略{}。这样是最保险的做法
    能完全保证不出现"侧效"错误
    (2)在编写多行宏的时候,在宏的前后加上{}如:

    #define PRINT(msg) {\
        KdPrint(("====================\n"));\
        KdPrint(msg);\
        KdPrint(("===================\n"));\
        }
  • 相关阅读:
    jquery 筛选元素(1)
    jquery操作元素的位置
    jquery 操作css 选择器
    jquery 操作css 尺寸
    jquery 标签中的属性操作
    jquery基本选择器
    jquery表单属性筛选元素
    jquery属性值选择器
    jquery 层级选择器
    jquery的基本选择器
  • 原文地址:https://www.cnblogs.com/qintangtao/p/3021048.html
Copyright © 2011-2022 走看看