精华内容
下载资源
问答
  • linux内核中的typecheck函数

    千次阅读 2016-07-12 10:41:31
    linux内核中的typecheck函数

    最近在查看linux代码时看到了一个typecheck函数,刚开始不是很明白,具体代码如下:

    #define typecheck(type,x) \
    ({      type __dummy; \
            typeof(x) __dummy2; \
            (void)(&__dummy == &__dummy2); \
            1; \
    })

    这是一个宏,它是检查type和x的数据类型是否一样,比如我们这样使用

    int a;
    typecheck(double,a);
    //宏展开后是一个表达式
    ({
          double  __dummy;
          typeof(a) __dummy2;
          (void)(&__dummy == &__dummy2);
          1;
    })
    //typeof关键字是C语言中的一个扩展,用于识别出某个表达式或类型的具体。
       typeof(int *) a,b;
                等价于:
                int *a,*b;
     //后面就是取两个变量的地址,然后比较,因为__dummy是double类型而__dummy2是int类型,取地址后是两种不同类型的指针,不同类型的指针不能比较,会出现编译错误,这种方式实现了类型的检查。
    1;
    //这个是表达式最后的值。如果整个表达式没有错误,那么最后的1就是整个表达式的值。
    //总结:整个宏定义其实是一个表达式,不是函数,无所谓返回值,这个值是这个表达式的值,复合表达式,取最后一个表达式的值,作为复杂表达式的值。所以这里整个表达式的值就是最后一个表达式的值,也就是1
    展开全文
  • CAS check 函数

    2009-08-26 16:00:32
    一个用于检查CAS格式是否正确的函数,会检查字串中短划线的个数和数字的关系以确定是否符合格式。
  • Win32Check函数的使用

    2011-06-24 23:49:00
    调用API函数时,可以用Win32Check函数来进行错误检查。若API函数调用成功,它什么也不做,若不成功,它就调用另一个API函数:GetLastError来显示出错信息。例如:Win32Check(PlaySound(BlobStream.Memory, 0, SND_...

    调用API函数时,可以用Win32Check函数来进行错误检查。若API函数调用成功,它什么也不做,若不成功,它就调用另一个API函数:GetLastError来显示出错信息。

    例如:

    Win32Check(PlaySound(BlobStream.Memory, 
    0
    , SND_SYNC 
    or
    
     SND_MEMORY))

    当PlaySound返回false时,将弹出详细的失败原因
    展开全文
  • 前端一些常用的check函数

    千次阅读 2018-02-26 11:13:40
    以前做对日外包是用到的一些前端校验函数/** * 文字列の長さを取得 */String.prototype.Blength = function() { var arr = this.match(/[^\u0000-\u00FF\uFF61-\uFF9F\uFFE8-\uFFEE]/ig); return arr == null ? ...

    以前做对日外包是用到的一些前端校验函数

    /**

     * 文字列の長さを取得
     */
    String.prototype.Blength = function() {
        var arr = this.match(/[^\u0000-\u00FF\uFF61-\uFF9F\uFFE8-\uFFEE]/ig);
        return arr == null ? this.length : this.length + arr.length;
    }

    /**
     * 全角カナと数字以外チェック
     * @param {String} inputStr 入力した文字列
     */
    function isZenkakuigai(inputStr) {
        if (inputStr.length > 0) {
            var iLen = inputStr.length;
            for (var iCount = 0; iCount < iLen; iCount++) {
                var    blnFlg    =    false;
                sAt = inputStr.charAt(iCount);
                for(var j=0; j<KANA_FIELD_CHECK_TABLE.length; j++){
                    if(sAt == KANA_FIELD_CHECK_TABLE[j]){
                        blnFlg = true;
                        break;
                    }
                }
                if(blnFlg == false){
                    return false;
                }
            }
            return true;
        }
        
        return false;
    }

    var KANA_FIELD_CHECK_TABLE = [
        '0','1','2','3','4','5','6','7','8','9',
        'A','B','C','D','E','F','G','H','I','J',
        'K','L','M','N','O','P','Q','R','S','T',
        'U','V','W','X','Y','Z',
        'a','b','c','d','e','f','g','h','i','j',
        'k','l','m','n','o','p','q','r','s','t',
        'u','v','w','x','y','z',
        'ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ',
        'ー',
        'ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ',
        'サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト',
        'ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ',
        'マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ',
        'ル','レ','ロ','ワ','ヲ','ン',
        'ガ','ギ','グ','ゲ','ゴ','ザ','ジ','ズ','ゼ','ゾ',
        'ダ','ヂ','ヅ','デ','ド','バ','ビ','ブ','ベ','ボ','ヴ',
        'パ','ピ','プ','ペ','ポ',
        '.','。',',','・','゛','゜','「','」','(',')','[',']','{','}','〔','〕',
        '《','》','『','』','【','】','-',
        'Ⅰ','Ⅱ','Ⅲ','Ⅳ','Ⅴ','Ⅵ','Ⅶ','Ⅷ','Ⅸ','Ⅹ',
        ' ',' '
    ];

    /**
     * 電話番号チェック
     * @param {String} inputStr 入力した文字列
     */
    function isPhoneNumber(inputStr) {
        if (inputStr.length > 0) {
            var phoneStr = "0123456789-";
            for (var i = 0; i < inputStr.length; i++) {
                var phoneChar = inputStr.substring(i, i + 1);
                if (phoneStr.indexOf(phoneChar) == -1) {
                    return false;
                }
            }
        }
        
        return true;
    }

    /**
     * バイトチェック
     * @param {String} inputStr 入力した文字列
     */
    function isByte(inputStr) {
        if (inputStr.length > 0) {
            if (!isAllDigits(inputStr)) {
                return false;

            } else {

                var iValue = parseInt(inputStr);
                if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
                    return false;
                }
            }
        }
        
        return true;
    }

    /**
     * 整数チェック
     * @param {String} inputStr 入力した文字列
     */
    function isInteger(inputStr) {
        if (inputStr.length > 0) {
            if (!isAllDigits(inputStr)) {
                return false;

            } else {

                var iValue = parseInt(inputStr);
                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                    return false;
                }
            }
        }
        
        return true;
    }

    /**
     * 長整数チェック
     * @param {String} inputStr 入力した文字列
     */
    function isLong(inputStr) {
        if (inputStr.length > 0) {
            if (!isAllDigits(inputStr)) {
                return false;

            } else {

                var iValue = parseInt(inputStr);
                if (isNaN(iValue) || !(iValue >= -9223372036854775808 && iValue <= 9223372036854775807)) {
                    return false;
                }
            }
        }
        
        return true;
    }

    /**
     * 数字型チェック
     * @param {String} argvalue 入力した数字
     */
    function isAllDigits(argvalue) {
        argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
            validChars = "0123456789abcdefABCDEF";
            startFrom = 2;
        }
        else if (argvalue.charAt(0) == "-") {
            startFrom = 1;
        }

        for (var n = startFrom; n < argvalue.length; n++) {
            if (validChars.indexOf(argvalue.substring(n, n + 1)) == -1)
                return false;
        }
        
        return true;
    }

    /**
     * 禁止文字チェック
     * @param {String} inputStr 入力した文字列
     */
    function hasForbiddenChar(inputStr) {
        if (inputStr.length == 0) {
            return false;
        }
        var iLen = inputStr.length;
        for (var iCount = 0; iCount < iLen; iCount++) {
            sAt = inputStr.charAt(iCount);
            if (forbiddenChar.indexOf(sAt) != -1) {
                return true;
            }
        }
        return false;
    }

    /**
     * 半角カナチェック
     * @param {String} inputStr 入力した文字列
     */
    function hasHankakuKana(inputStr) {
        if (inputStr.length == 0) {
            return false;
        }
        var iLen = inputStr.length;
        for (var iCount = 0; iCount < iLen; iCount++) {
            sAt = escape(inputStr.charAt(iCount));
            if ("%uFF61" <= sAt && sAt <= "%uFF9D") {
                return true;
            }
        }
        return false;
    }

    /**
     * エラーメッセージを表示する
     * @param {String} errFlg      エラーフラグ
     * @param {String} inputComId    検証するコンポーネントID
     * @param {String} chkErrComId エラーメッセージを表示するコンポーネントID
     * @param {String} msg         エラーメッセージ
     */
    function dispMsg(errFlg, inputComId, chkErrComId, msg) {
        jQuery("#" + inputComId).css("backgroundColor","");
        if (errFlg) {
            jQuery("#" + inputComId).addClass('txt_error_red');
            jQuery("#" + chkErrComId).text(msg);
        } else {
            jQuery("#" + inputComId).removeClass('txt_error_red');
            jQuery("#" + chkErrComId).text("");
        }
        
        return errFlg;
    }

    /**
     * nullチェック
     * @param {String} s 入力した文字列
     */
    function isNull(s) {
        if (s == null || s == "") {
            return true;
        }
        
        var regu = /^[ ]+$/;
        var re = new RegExp(regu);
        return re.test(s);
    }

    /**
     * 最大長さチェック
     * @param {String} s 入力した文字列
     */
    function isMaxLength(s, maxLen) {
        if (s == "") {
            return false;
        }
        
        if (s.Blength() > maxLen) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 文字数チェック
     * @param {String} s 入力した文字列
     */
    function isFixedLength(s, fixedLen) {
        if (s.Blength() == fixedLen) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 範囲チェック
     * @param {String} s 入力した文字列
     * @param {String} min 最小値
     * @param {String} max 最大値
     */
    function isNotRange(s, min, max) {
        if (isNumber(s) && isNumber(min) && isNumber(max)) {
            if (Number(s) >= Number(min) && Number(s) <= Number(max)) {
                return false;
            } else {
                return true;
            }
        }
        
        return true;
    }

    /**
     * 以上範囲チェック
     * @param {String} s 入力した文字列
     * @param {String} min 最小値
     */
    function isLowerRange(s, min) {
        if (isNumber(s) && isNumber(min)) {
            if (Number(s) < Number(min)) {
                return true;
            } else {
                return false;
            }
        }
        
        return false;
    }

    /**
     * 英数字チェック
     * @param {String} s 入力した文字列
     */
    function isNumberOrLetter(s) {
        var regu = /^[0-9a-zA-Z]+$/;
        var re = new RegExp(regu);
        return re.test(s);
    }

    /**
     * ダブル型チェック
     * @param {String} s 入力した文字列
     */
    function isDouble(s) {
        var regu = /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/;
        var re = new RegExp(regu);
        return re.test(s);
    }

    /**
     * 数字型チェック
     * @param {String} s 入力した文字列
     */
    function isNumber(s) {
        try {
            if (isNaN(Number(s))) {
                return false;
            }
            return true;
        } catch (e) {
            return false;
        }
    }

    /**
     * 電話番号チェック
     * @param {String} s 入力した電話番号
     */
    function isTel(s) {
        var regu = /^((\d{2}-\d{4}-\d{4})|(\d{3}-\d{4}-\d{4}))$/;
        var re = new RegExp(regu);
        return re.test(s);
    }


    /**
     * メールアドレスチェック
     * @param {String} emailStr 入力した文字列
     */
    function isMail(emailStr) {
        if (emailStr.length == 0) {
            return true;
        }
        return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d)|(([a-z]|\d)([a-z]|\d|-|\.|_|~)*([a-z]|\d)))\.)+(([a-z])|(([a-z])([a-z]|\d|-|\.|_|~)*([a-z])))$/i.test(emailStr);
    }

    /**
     * タイムチェック
     * @param {String} s 入力した文字列
     */
    function isMaskTime(s) {
        if (s == null || s == "" || s.length != 5 || s.indexOf(":") == -1) {
            return false;
        }
        
        try {
            var hour = Number(s.substring(0, 2));
            var minter = Number(s.substring(3));
           
            if (isNaN(hour) || hour < 0 || hour >= 24 || isNaN(minter) || minter < 0 || minter >= 60) {
                return false;
            }
        } catch (e) {
            return false;
        }
        
        return true;
    }
    展开全文
  • Verilog的Timing check函数之$width

    千次阅读 2018-09-28 22:38:10
    $width函数用于检查信号脉冲的宽度是否达到要求。而信号脉冲的宽度由信号的 reference_event 和 data_event 决定,如下图所示: 【参数】 note1 、第二个参数 data_event 是一个隐式参数,也就是说你不用将它写...

    //************************************************************************************************
    //    $width
    //************************************************************************************************
    【简介】
    $width函数用于检查信号脉冲的宽度是否达到要求。而信号脉冲的宽度由信号的reference_eventdata_event决定,如下图所示:

    【参数】

    note1、第二个参数data_event是一个隐式参数,也就是说你不用将它写出来。系统会根据你的第一个参数得到第二个参数,也就是说,第二个参数就是第一个参数的反向取沿。

    note2、第3个、第4个参数是可选的。但是需要注意要使用第4个参数,你首先要有第3个参数。
    note3、第3个参数是门限值,如果脉冲小于该门限,是不会报violation的,没有该参数时该值为0。

    【例子】
    1、

    2、

    【参考链接】
    (筆記) 如何使用$width? (SOC) (Verilog) 

    展开全文
  • create or replace function check( v_s_date in DATE, v_amount in NUMBER, v_start_date in DATE, v_req_no in NUMBER, v_end_date in DATE ) Return char is Result char(100); total_get number(12,4)
  • NUMERIC_CHECK函数解析

    千次阅读 2011-08-29 16:04:55
    这个函数可以检查一个输入串的类型,返回CHAR或者NUMC,但是只能检查整数,带小数点的都被当作CHAR了。 例如: <!-- span {font-family:"Courier New"; font-size:12pt; color:rgb(0,0,0)
  • FileInputStream使用了指定的文件路径和名称,抛出FileNotFoundException,这个读取文件内容的read()函数抛出IOException异常,关闭文件输入流的close()函数同样也抛出IOException异常。 import java.io.*; class ...
  • 在最近的一次保守任务中,需要修改一个jsp页面的检查输入的函数,该函数是用javascript写的脚本,内嵌在jsp代码里的。 在原本的jsp里,已经有了一些check的判断,在js脚本里继续追加check代码后,问题出现了:check...
  • 接下来看看本题正确的check函数的写法 bool chk ( int x ) { int sum = 0 , tot = 1 ; for ( int i = 1 ; i n ; i ++ ) { if ( sum + a [ i ] x ) sum + = a [ i ] ; else { tot ++ ; ...
  • 【HDU 1045】Fire Net(DFS,check函数)

    千次阅读 2017-07-29 12:32:21
    //检查函数的重要!!!! { vis[i][j]= true ; //填入炮弹 DFS(num+ 1 ); vis[i][j]= false ; //回溯 } } int main(){ while ( cin >>n&&n) { memset (vis, false , sizeof (vis)); ans= 0 ; ...
  • function startTime()//函数startTime, 功能:显示当前时间 { var today=new Date()//声明一个时间对象 var h=today.getHours()//获取当前小时 var m=today.getMinutes()//获取当前分钟 var s=today.getSeconds...
  • check()函数

    千次阅读 2019-12-29 12:59:45
    https://ac.nowcoder.com/acm/contest/951/B 开始,我没有想到高效的check()函数,所以超时了。 遇到二分的题目时,要想如何找到高效的check()函数
  • include/linux/compiler-gcc4.h #define ...__must_check函数是指调用函数一定要处理该函数的返回值,否则编译器会给出警告。 定义一个必须检查返回值得函数: int pop(_Type& data) __mus...
  • // CHECK macros are defined to test for conditions within code. Any CHECK that // fails will log the failure and terminate the application. // e.g. CHECK_GE(3, 2) will pass while CHECK_GE(3, 4) will...
  • check_env函数解析

    2015-10-26 11:11:00
    又是一个比较长的函数,是用来检查文件权限,目录条件的。具体代码如下: check_env() { # Check user privilege. #检查用户权限 check_user root # Check FQDN hostname. #检查主机名是否符合规则 ...
  • 可以看到这个函数有输出部分,如果能逆出来那就是flag,但是在查看后我放弃了,这内存指过来指过去很烦,于是我去看了check函数: 这能判断为真?????? 直接gdb动态调试,绕过这个函数 Linux运行,输入命令 ...
  • check_pkg函数解析

    2015-10-23 09:40:00
    函数位置,conf/core,具体代码如下: check_pkg() { # Usage: check_pkg <command> <package> # It means: <package> owns <command> #定义了2个位置参数 cmd="$1" pkg="$2" ...
  • CheckFile函数之asp实现检查某一文件是否存在的代码
  • checkVector( )函数

    2020-01-10 16:05:36
    参考链接: ...https://www.cnblogs.com/drunknbeard/p/9671451.html(checkVector()源码实现) checkVector是opencv里Ma...
  • 函数 NUMERIC_CHECK

    2009-07-21 20:48:00
    函数 NUMERIC_CHECK 这个函数可以检查一个输入串的类型,返回CHAR或者NUMC,但是只能检查整数,带小数点的都被当作CHAR了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,932
精华内容 3,172
关键字:

check函数