隐藏在C中经过的时间

Jua*_*uan 2 c

我需要隐藏指令以在C中获得经过的时间.例如,在下一个代码中,有几行指令来获取函数foo的经过时间.

struct timeval start_keygen, end_keygen;
long int diff_keygen_sec = 0;
gettimeofday(&start_keygen, NULL);
foo(r, w, h);
gettimeofday(&end_keygen, NULL);
timediff(start_keygen, end_keygen, &diff_keygen_sec); 
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在一个函数中隐藏多行,例如在"getTime"中,即:

getTime(foo(r,w,h))
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 5

你可以使用一个宏:

#define TIME(e, res) do{struct timeval start_keygen, end_keygen; \
            res = 0; \
            gettimeofday(&start_keygen, NULL); \
            e; \
            gettimeofday(&end_keygen, NULL); \
            timediff(start_keygen, end_keygen, &res)} while(0)  \
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

long int myRes;
TIME(foo(r,w,h), myRes);
Run Code Online (Sandbox Code Playgroud)

这将扩展到您拥有的代码,每次在编译时使用它并将结果绑定到myRes.