具有自己的getch函数的隐式转换警告

时间:2016-07-04 20:31:26

标签: c types int unsigned signed

我找到了conio.h的getch()的实现。可悲的是,它编译了一个转换警告,我不知道我该怎么做才能正确解决它。 我找到了this链接,但我不知道如何实现它。

getch.c:13:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
    newattr.c_lflag &= ~( ICANON | ECHO );
                    ~~ ^~~~~~~~~~~~~~~~~~
getch.c:27:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
    newattr.c_lflag &= ~( ICANON );
                    ~~ ^~~~~~~~~~~
2 warnings generated.

CLANG 3.5返回:

export PYTHONPATH=/Users/NNNN/anaconda/bin/python:$PYTHONPATH

1 个答案:

答案 0 :(得分:1)

由于整数提升,这些定义被提升为int,但c_lflag成员是无符号整数。

确保按位操作以无符号类型完成:

 newattr.c_lflag &= ~( 0u | ICANON | ECHO );
                        ^