如何转发声明clock_gettime()
How to forward declare clock_gettime()
我在cpp
项目中使用clock_gettime()
。但它给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);
自己声明库函数是没有意义的。clock_gettime()
是在time.h
中声明的。我想这里"击中"你的是glibc
默认情况下只使标准C函数可见。对于其他任何东西(例如clock_gettime()
中的POSIX
),您必须定义相应的宏才能实际获得声明。gcc
根据所选择的模式(例如-std=gnu99
)自动为某些宏执行此操作。
在你的例子中,只需添加
#define _POSIX_C_SOURCE 199309L
在任何include之前,确保包含time.h
。
(参见手册页的"特性测试宏"部分)
您应该通过包括包含声明的头文件来声明库函数。在本例中为time.h
。自己编写声明很容易出错。例如,您将第一个参数声明为int
,这与clockid_t
不一定相同。
显然,其他人已经包含了time.h
你不应该假设"别人"已经包含了你需要的头文件。总是包括你自己使用的每一个头。
编辑:是的。我已经包括了时间。h
如果是这种情况,那么看起来您的time.h
没有声明clock_gettime
。你需要再次检查你的c库是否支持POSIX。
因此这个错误是预期的
如果你包含头,那么它是而不是期望clock_gettime
没有声明。除非你的c库不支持POSIX。
- 使用 SendInput 或 mouse_event 不适用于 clock()?
- 为什么我们可以在 c++ 中使用 srand(clock())?
- 除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据
- IBM AIX std::clock()?
- Windows C 上的getTime ofday行为
- 为什么常量CLOCKS_PER_SEC不需要用 std:: 命名,但 <ctime> clock() 和 clock_t 可以呢?
- 当我使用 cin 时,我如何使用 clock() 测量时间
- 'clock()' 给出通常的时钟而不是 CPU 时钟
- 使用Clock()函数测量程序的运行时间
- 为什么我的sf :: clock在sfml中单独重置
- C++:Linux 中的计时(使用 clock())不同步(由于 OpenMP?)
- 如何在Linux上获得C 代码块的时钟刻度?clock()结果没有意义
- clock :: getElapSedTime()被调用时SFML 2.0崩溃
- 为什么在使用基于 clock() 的计时器宏时会得到负值
- clock() 函数始终返回 0
- 使用 clock() 函数调度任务时出现问题
- C++ VMWare Fusion/Boot Camp 下 VS2010 中 ctime 的 clock() 方法出现问题
- 为什么clock()被认为是坏的
- MFC/C++:需要遥远的"wall clock"时间而不重置系统的时间
- c++ 中的 clock() 时间和 java 中的 System.CurrentTimeMillis() 之间的时间差