경고:'serialAttr'는 이 기능에서 uninitialized 사용됩니다

1225 단어 Bug
int main_form::markSerialPort()
{
    int fd=m_fd;
    termios serialAttr;
    serialAttr.c_cflag |= PARENB|CMSPAR;
    serialAttr.c_cflag &= ~PARODD;
    if(tcsetattr(fd, TCSANOW, &serialAttr) !=0)   // 
    {
        perror("serial error");
        return -1;
    }
    return 0;
}

내 위치 검사에 이 문제가 생겼는데, 친절한 팔의 Open Serial Port () 에는 문제가 없었다.
int main_form::openSerialPort()
{
    int fd = -1;

    const char *devName = "/dev/ttyUSB0";
    fd = ::open(devName, O_RDWR|O_NONBLOCK);
    if (fd < 0) {
        return -1;
    }

    termios serialAttr;
    memset(&serialAttr, 0, sizeof serialAttr);
    serialAttr.c_iflag = IGNPAR;
    serialAttr.c_cflag = B9600 | HUPCL | CS8 | CREAD | CLOCAL;
    serialAttr.c_cc[VMIN] = 0;
    if (tcsetattr(fd, TCSANOW, &serialAttr) != 0) {
        return -1;
    }
    return fd;
}

그들 두 사람의 지위 차이는 성명 안에 있다
private:
    int openSerialPort();
private slots:
    int markSerialPort();
하나는private이고 하나는privateslots이다.
해결 기록:
private:
    int openSerialPort();
    int m_timeId;
    int markSerialPort();
    int spaceSerialPort();

실패!!

좋은 웹페이지 즐겨찾기