2009-12-26 79 views
1

我想現在編譯別人的代碼,而該人使用可變HZ(我認爲這代表赫茲的CPU的赫茲),但編譯器抱怨變量未定義。我的猜測是這個人沒有包含正確的頭文件。HZ變量沒有定義

因此,沒有人知道它的頭文件,HZ的定義?

感謝

編輯:編制適用於Debian的g ++ 4.3.2版
我使用的設置 - OSX 10.5.8豹,G ++版本4.0.1是它失敗。

回答

6

Paul's answer是正確的,但我會擴大一點。

Linux有其確定內核的計時器的頻率編譯時選擇。在大約HZ定義的頻率上,內核調度程序將中斷進程並開始其調度工作。 (一個相關的功能是DynTicks選項,它會消除HZ值,並根據工作負載改變中斷頻率。)最常見的設置是100.高度響應的系統可能使用1000.最近的內核版本使用默認值250.系統計算量大的工作負載可能會使用較小的值(以最大限度地減少調度程序的影響)。

因此,它是一個Linux特有的非常價值,你只會發現它在/usr/include/asm/param.h

定義由於100是一種共同的價值,您可能會在簡單地增加-DHZ=100CXXFLAGS變量是安全的。這將決不意味着該計劃實際上將工作在OS X上,只知道它可能編譯

0

可以預期來自於命令行:

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

很難說更W/O的更多細節。這是什麼操作系統?

+0

這是OSX豹10.5.8,G ++ 4.0.1版本。我在Debian上用g ++版本4.3.2試了一下,結果很奏效。也許我的g ++太老了? – Opt 2009-12-26 02:46:21

6

在我的Linux機器,它在/usr/include/asm/param.h:#define HZ 100

的已定義我找不到一個定義在我的Mac OS X框中的任意位置。