我正在尝试编译某人的代码并且该人正在使用变量HZ(我认为它代表Hertz用于cpu的hertz)但编译器抱怨该变量未定义。我的猜测是该人没有包含正确的头文件。
所以有人知道哪个头文件,HZ定义在哪个?
由于
编辑:编译适用于Debian g ++版本4.3.2
我正在使用的设置--OSX Leopard 10.5.8,g ++版本4.0.1是它失败的地方。
答案 0 :(得分:6)
在我的Linux机器上,它在/usr/include/asm/param.h:#define HZ 100
我无法在Mac OS X上找到任何定义。
答案 1 :(得分:6)
Paul's answer是正确的,但我会稍微扩展一下。
Linux有一个编译时选项,用于确定内核计时器的频率。大约是HZ定义的频率,内核调度程序将中断进程并开始其调度工作。 (相关功能是DynTicks选项,它消除了HZ值,并根据工作负载更改中断频率。)最常见的设置是100.高响应系统可能使用1000.最近的内核版本使用默认值250。使用大量计算工作负载可能会使用较小的值(以最小化调度程序的影响)。
因此,它是非常特定于Linux的值,您只能在/usr/include/asm/param.h
由于100是一个常见值,因此您只需将-DHZ=100
添加到CXXFLAGS
变量即可。这绝不意味着程序在OS X上实际上工作,只是它可能编译。
答案 2 :(得分:0)
可能会出现命令行:
c++ -DHZ=1000 file.cpp -o file.o
很难说更多细节。这是什么操作系统?
答案 3 :(得分:0)
答案似乎不再适用于 Linux Kernel 5.8.0 - 头文件 /usr/include/asm/param.h
中只有一行,如下所示。我不知道他们为什么这样做。
#include <asm-generic/param.h>
您会在 #define HZ
中找到 /usr/include/asm-generic/param.h
。下面的代码是在我的 Ubuntu 发行版中找到的,它可能与 Linux 中的代码不同,因为它是一个依赖于架构的值。
// ...
#ifndef HZ
#define HZ 100
#endif
// ....