Cのソースコードファイルを読んでいるときに、この宣言を見つけました。(このソースコードはLinuxシステムプログラム用に記述されています。これは非常に重要な情報です)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
最初は「timer_t」についてもっと知りたかった。そこで、ヘッダー情報を取得するために「time.h」をグーグルで検索しました。しかし、「timer_t」については何も言わず、「time_t」についてのみ言及しました。
好奇心で、「mac」コンピューターで「time.h」c標準ライブラリファイルを検索して開きました(ご存じのとおり、/ usr / includeフォルダーにはc標準ライブラリファイルが格納されています)。しかし、このファイルは以前のGoogleのものと同じでした。
最後に、仮想マシンを使用してlinux os(ubuntu)をオンにし、linux c標準ライブラリフォルダー(フォルダーパスはOSXと同じ)の 'time.h'を開きました。予想通り、Linuxの 'time.h'ファイルにはtimer_tの宣言があります。
以下に「timer_t」タイプを宣言するコード行を追加しました。
#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
# define __timer_t_defined 1
# include <bits/types.h>
/* Timer ID returned by `timer_create'. */
typedef __timer_t timer_t;
私の質問はこれです。
なぜ 'timer_t'はLinux C標準ライブラリでのみ定義されているのですか?
この状況は一般的に起こりますか?つまり、異なるOS間で定義が異なる機能や属性はありますか?
timer_t
は「Linuxでのみ定義」されていません。たとえば、Windows / Cygwinでは定義されています。ヘッダーファイル(LinuxおよびCygwin)の定義によると、それはPOSIX標準タイプのようです。(一部のプラットフォームは標準に準拠していない場合があることを除いて、定式化されているため、「一般的に発生する」特定の状況はありません。)WRT言語ライブラリの違いに関する一般的な質問。ベンダーが標準に準拠しているかどうか、またはベンダーが準拠しているバージョンに依存します。