2015-09-18 2 views
1

test.c ...путаются termios.h константы

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

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

На моей системе это печатает "8".

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?

ответ

4

В C, число буквальным, начиная с нуля интерпретируется как восьмеричное число, так что 010 означает 10 в восьмеричной системе, и, следовательно 8.

+1

восьмеричной, подарок, который продолжает давать ... – EOF

Смежные вопросы