如何找到父函数的__FUNCTION __,_ _ _ 3和__FILE__?

Dom*_*que 5 c

我只是愚弄自己:我想跟踪一个进程的执行,为了做到这一点,我编写了一个函数trace(),其中包含以下代码行:

printf("%s[%s:%d], %s\n", __FUNCTION__, __FILE__, __LINE__, s_message);
Run Code Online (Sandbox Code Playgroud)

我希望看到我在哪个函数,该文件中的文件和行,但我只是看到了我编写'trace()'函数的文件的信息.

是否有可能,是否有一些trace()左右,告诉C编译器从调用函数的父代中获取所提到的宏?

Tho*_*mas 9

你需要将它包装在一个宏中,例如:

void _trace(char const *function, char const *file, long line, char const *message) {
  printf("%s[%s:%ld], %s\n", function, file, line, message);
}

#define trace(message) _trace(__FUNCTION__, __FILE__, __LINE__, (message))
Run Code Online (Sandbox Code Playgroud)

  • 这是宏的重要用途之一. (2认同)