对termios.h常数感到困惑

时间:2015-09-18 16:11:33

标签: c termios

... test.c的

#include <termios.h>
#include <stdio.h>

int main() {
    printf("%x\n",B600);
}

在我的系统上打印&#34; 8&#34;。

gcc -M test.c显示

/usr/include/stdc-predef.h /usr/include/termios.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/termios.h \
/usr/include/x86_64-linux-gnu/sys/ttydefaults.h /usr/include/stdio.h \
/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h

在/usr/include/x86_64-linux-gnu/bits/termios.h内:

#define  B600   0000010

其他标头都没有B600的定义。 8的价值来自哪里?

1 个答案:

答案 0 :(得分:4)

在C中,以零开头的数字文字被解释为八进制数,因此010表示八进制数为10,因此为8。