如何转发声明clock_gettime()

时间:2015-09-16 12:09:57

标签: c++ gcc g++ gettime

我在clock_gettime()项目中使用cpp。 但它在此范围错误中未声明clock_gettime()。 显然,其他人已经包含time.h,因此预计会出现此错误。 但是我如何转发声明clock_gettime()? 我试过了int clock_gettime(int,struct timespec *)

http://linux.die.net/man/3/clock_gettime,声明如下: int clock_gettime(clockid_t clk_id, struct timespec *tp);

2 个答案:

答案 0 :(得分:2)

自己声明库函数没有意义。在clock_gettime()中声明time.h 。我想在这里“击中”的是glibc默认只显示标准C函数。对于其他任何事情(例如POSIX中的clock_gettime()),您必须定义相应的宏来实际获取声明。 gcc会自动为某些宏执行此操作,具体取决于所选模式(例如-std=gnu99)。

在您的情况下,只需添加

#define _POSIX_C_SOURCE 199309L
在任何包含之前

,并确保包括time.h

(参见联机帮助页的“功能测试宏”部分)

答案 1 :(得分:1)

您应该通过包含包含声明的标头来声明库函数。在这种情况下time.h。自己编写声明很容易出错。例如,您将第一个参数声明为int,但不一定与clockid_t相同。

  

显然,其他人已经包括time.h

你永远不应该假设“其他人”已经包含了你需要的标题。始终包括您自己使用的每个标题。

编辑:

  

是。我已经包括time.h

如果是这种情况,那么您的time.h似乎不会声明clock_gettime。您需要仔细检查您的c库是否支持POSIX。

  

因此预计会出现此错误

如果您确实包含标题,那么期望未声明clock_gettime。除非你的c库不支持POSIX。