12
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
calendar_bottom
RSS | ATOM | ADMIN

badulog

日々の覚書と雑記
<< [linux] NFS+rsyncでパックアップとれてない | main | [linux] カーネルリビルド >>
ENTRY TOP
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | - | - | - |
ENTRY BOTTOM ENTRY TOP
[C] time_tがlongであることと事前定義マクロ
/usr/include/time.hで
typedef __time_t time_t;

/usr/include/bits/types.hで
/* We want __extension__ before typedef's that use nonstandard base types
such as `long long' in C89 mode. */
#define __STD_TYPE __extension__ typedef
・・・(略)・・・
/* Timer ID returned by `timer_create'. */
__STD_TYPE __TIMER_T_TYPE __timer_t;

"__extension__"というのはここここのように、
__extension__ typedef long long int64_t;

こんな風にしておくと、-pedantic を使用した場合に gcc が標準規格に沿っていないコードに対して警告をしなくなるだけらしい。
なので、/usr/include/bits/types.hでは、結局
typedef __TIMER_T_TYPE __timer_t;

ということ。
さらに、/usr/include/bits/typesizes.hで
#define __TIME_T_TYPE __SLONGWORD_TYPE

/usr/include/bits/types.hに戻って
#define __SLONGWORD_TYPE long int

と。つまるところが、
typedef long int time_t;

終了。
で、__extension__というのは、
事前定義マクロで
事前定義マクロというのは、何かヘッダをインクルードせずとも予め定義されるマクロです。
__名前__
のように前後にアンダースコアが2つつきます。

__FILE__とか__LINE__とかもそうだったんだ。こちら

baduizm | C言語 | - | - | - |
ENTRY BOTTOM ENTRY TOP
スポンサーサイト
スポンサードリンク | - | - | - | - |
ENTRY BOTTOM