在阅读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标准库文件。)但是,该文件与以前用谷歌搜索的文件相同。
最后,我使用虚拟机打开了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标准库中定义?
这种情况通常发生吗?我的意思是,不同的操作系统之间是否存在定义不同的功能或属性?
timer_t
不是“仅在linux中定义”,例如在Windows / Cygwin上也已定义。根据头文件(Linux和Cygwin)中的定义,它似乎是POSIX标准类型。(除了某些平台可能不符合标准外,在您制定时,我看不到任何“常见情况”的特殊情况。)WRT有关语言库差异的一般性问题;这取决于供应商是否遵守标准或他们遵循的版本。