我想知道是否有可能创建一个聪明的宏来自动在C中使用C的“进程”。假设我有一个这样的小结构:
typedef struct pbench {
char description[256];
int nbenchs;
double times;
} ProcessBench;
还有一个宏(get_time()
是一个返回double的函数):
#define BENCH(process, bench_struct, description) \
int i; \
bench_struct.description = description; \
bench_struct.nbenchs = 50; \
double start = get_time(); \
for (i = 0; i < bench_struct.nbenchs; ++i) \
process(); \
bench_struct.times = get_time() - start;
如果我没有弄错的话,这个宏可以用来对任何带有签名void func()
的函数使用BENCH(func, func_bench, func_description)
进行基准测试。
有没有一种方法可以创建一些像这样的宏来对void func_args(args...)
,return_type func_return()
,return_type func_return(args...)
甚至小行代码进行基准测试?
2条答案
按热度按时间ttvkxqim1#
你可以只传递整个函数调用,包括参数,而忽略任何函数结果,例如:
(Note宏的小变化-括号已从
process
中删除。)jvlzgdj92#
这是我解决办法。
确保它在一行中或使用“\”。这样使用它: