2017-10-14 6 views
0

のfcntl-linux.hを示すO_APPENDの16進数は何ですか?

#ifndef O_APPEND 
# define O_APPEND  02000 
#endif 

//サンプルCコード

int APPEND_MASK = O_APPEND; 

GDBは、私はヘッダファイルを介して、8進数でビットフラグを記憶していると判断

(gdb) print /x APPEND_MASK 
$11 = 0x400 

snippit手動での変換はどうしたらよいでしょうか?例えば、ヘッダーファイルのどこに8進数と言うのですか?

+3

「0」で整数リテラルを開始すると、8進数を意味します。 – Barmar

+0

ヘッダーファイルにありません。これは言語標準の一部です。 0で始まる数字の後に 'x 'が続く数字は8進数です。 '0x 'の数字は16進数です。 –

+0

新しいことを学んだ..ありがとう.. –

答えて

2

ヘッダーファイルは単純な文字列置換であるマクロを定義するだけです。その結果、マクロの結果は

int APPEND_MASK = O_APPEND; 

がc

int APPEND_MASK = 02000; 

で置換されている整数定数が0で始まる場合、0x接頭辞は、それを解釈する手段と同じように(8進数として解釈だということですヘックスとして)。定数がCコードに直接記述されるのか、ヘッダーのマクロから得られるのかは違いありません。

関連する問題