我想將 clockid_t 宏作為編譯時引數 ( gcc -D CLOCK=CLOCK_REALTIME file.c)傳入,以在我的代碼中定義宏 CLOCK。我如何找出它們各自的整數值,以便我能做到這一點?
我需要的 4 個 clockid_t 是手冊頁上列出的:https ://linux.die.net/man/3/clock_gettime
系統是Linux。
uj5u.com熱心網友回復:
你什么都不用做!-DCLOCK=CLOCK_REALTIME,或其他任何東西,在命令列上都可以正常作業。
這是因為宏的主體是在宏展開后進行宏展開的,而不是在定義宏時進行。所以,只要time.h被列入前CLOCK被使用,CLOCK將擴大后CLOCK_REALTIME也將被擴大。
uj5u.com熱心網友回復:
查看<time.h>以獲取實際值。
但是,請注意,系統定義的時鐘 ID 的值可能因平臺而異。例如,CLOCK_MONOTONIC是1在Linux上,但4在FreeBSD。
因此,您最好定義自己的宏值,然后使用 中的常量將它們映射到代碼中適當的時鐘 ID,這些常量<time.h>基于您編譯的平臺。
#include <time.h>
clockid_t GetDefinedClock()
{
#if CLOCK == 1
return CLOCK_REALTIME;
#elif CLOCK == 2
return CLOCK_MONOTONIC;
#elif CLOCK == 3
return CLOCK_PROCESS_CPUTIME_ID;
#elif CLOCK == 4
return CLOCK_THREAD_CPUTIME_ID;
#else
#error "NO CLOCK DEFINED!"
return 0;
#endif
}
clockid_t clock = GetDefinedClock();
// use clock as needed...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315033.html
上一篇:在SQL目錄中找不到程式集“system.directoryservices.accountmanagement”
