zoukankan      html  css  js  c++  java
  • C++(1):error: invalid conversion from ‘void (*)()’ to ‘void (*)(int)

    void signaldemo_test(void)
    {
        struct itimerval tv, otv;
        signal(SIGALRM, sigFunc);
        //how long to run the first time
        tv.it_value.tv_sec = 3;
        tv.it_value.tv_usec = 0;
        //after the first time, how long to run next time
        tv.it_interval.tv_sec = 5;
        tv.it_interval.tv_usec = 0;
        if (setitimer(ITIMER_REAL, &tv, &otv) != 0)     //定时每隔5s执行一次
        {
            printf("setitimer err %d
    ", errno);
        }
        while(1)
        {
            sleep(2);
            //隔2s打印一遍
            printf("otv: %d, %d, %d, %d
    ", otv.it_value.tv_sec, otv.it_value.tv_usec, otv.it_interval.tv_sec, otv.it_interval.tv_sec);
        }
    }
    
    void sigFunc()
    {
        static int iCnt = 0;    printf("The %d Times: my girl maybe in SZ library 
    ", iCnt++);}
    }
    以上这段代码在用g++编译是会有如下错误:
    /mnt/hgfs/Linux/cleanCup/src/signaldemo.cpp:9: error: invalid conversion from ‘void (*)()’ to ‘void (*)(int)’
    /mnt/hgfs/Linux/cleanCup/src/signaldemo.cpp:9: error: initializing argument 2 of ‘void (* signal(int, void (*)(int)))(int)’

    值得注意的是在gcc编译时不会出错,但是用g++就会有问题,究其原因就是C语言编译器允许隐含性的将一个通用指针转换为任意类型的指针,而C++不允许。
    void sigFunc(int)
    {
        static int iCnt = 0;    printf("The %d Times: my girl maybe in SZ library 
    ", iCnt++);}
    }



  • 相关阅读:
    iOS 成员变量,实例变量,属性变量的区别,联系
    iOS类别(category)不能添加成员变量但是可以添加属性的问题
    iOS缓存机制详解
    ios数据缓存方法
    仿360圆圈自动隐藏效果
    html 背景透明文字不透明
    netty
    关注网站
    关注URL
    DNS之XX记录
  • 原文地址:https://www.cnblogs.com/bitter-first-sweet-last/p/4526387.html
Copyright © 2011-2022 走看看