2015-09-18 1 views
1

test.c ...confus au sujet termios.h constantes

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

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

Sur mon système cette affiche "8".

-M gcc test.c montre

/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 

intérieur de /usr/include/x86_64-linux-gnu/bits/termios.h:

#define B600 0000010 

Aucun des autres en-têtes ont une définition pour B600. D'où vient la valeur de 8?

Répondre

4

En C, un littéral commençant par un zéro est interprété comme un nombre octal, donc 010 signifie 10 en octal, et donc 8.

+1

octal, le cadeau qui continue à donner ... – EOF