使用 --coverage 选项编译时是否定义了任何宏?

问题描述

@H_502_0@正如标题所提到的,我想实现这样的目标:

void my_exit(int status)
{
#ifdef _GCOV
   __gcov_flush();
#endif
   _exit(status);
}
@H_502_0@但是我不知道用_GCOV编译时是否定义了--coverage(或类似的东西)。任何想法将不胜感激!

解决方法

好像不是:

$ true | gcc -E - -dM > no-coverage.h
$ true | gcc -E - -dM --coverage > coverage.h
$ diff no-coverage.h coverage.h 
,

由于似乎没有预定义的宏,根据 o11c 的 answer,一个简单的解决方案是自己定义它:

gcc --coverage -D GCOV