Переменная HZ не определена - PullRequest
       12

Переменная HZ не определена

1 голос
/ 26 декабря 2009

Я пытаюсь скомпилировать чей-то код прямо сейчас, и человек использует переменную HZ (что, я думаю, обозначает Герц для герца процессора), но компилятор жалуется, что переменная не определена. Я предполагаю, что этот человек не включил правильный заголовочный файл.

Так кто-нибудь знает, в каком заголовочном файле определен HZ?

Спасибо

Редактировать: Компиляция работает в Debian g ++ версии 4.3.2
Используемая мной настройка - OSX Leopard 10.5.8, g ++ версии 4.0.1 - там, где она не работает.

Ответы [ 3 ]

6 голосов
/ 26 декабря 2009

На моем Linux-компьютере он определен как /usr/include/asm/param.h:#define HZ 100

Я не могу найти определение в моем Mac OS X.

6 голосов
/ 26 декабря 2009

Ответ Павла правильный, но я немного расширю.

В Linux есть опция времени компиляции, которая определяет частоту таймера ядра. Примерно на той частоте, с которой определен HZ, планировщик ядра будет прерывать процессы и начинать свою работу по планированию. (Связанной функцией является опция DynTicks, которая исключает значение HZ и изменяет частоту прерываний в зависимости от рабочей нагрузки.) Наиболее распространенным параметром является 100. В высокочувствительных системах может использоваться 1000. В последних версиях ядра по умолчанию используется 250. Системы при больших вычислительных нагрузках может использоваться меньшее значение (чтобы минимизировать влияние планировщика).

Таким образом, это очень специфичное для Linux значение, и вы найдете его только в /usr/include/asm/param.h

Поскольку 100 является общим значением, вы можете просто добавить -DHZ=100 в переменную CXXFLAGS. Это ни в коем случае не означает, что программа на самом деле будет работать на OS X, только что она может скомпилировать .

0 голосов
/ 26 декабря 2009

Ожидается, что он поступит из командной строки:

c++ -DHZ=1000 file.cpp -o file.o

Трудно сказать больше без подробностей. что это за операционная система?

...