c++ - 获取在 C/C++ 中调用的最后一个函数

标签 c++ c api function

我正在使用一个 API,我发现自己写了很多一般形式的错误处理代码:

if (errorCode = functionName(params)) 
    printError(errorCode, "functionName", __LINE__, __FILE__);

printError 的主体可能如下所示:

fprintf(stderr, "Error in function %s on line %d of file %s", 
    functionName, lineNumber, fileNumber);

但是,每次都硬编码函数名称是一件很痛苦的事情。有没有办法在运行时或通过宏获取导致错误的函数的名称,即最后调用的函数?当然,我不能以任何方式修改 API 函数。有很多方法可以得到 current function以及 calling function , 但这些都不是从函数外部工作的。

最佳答案

你可以拥有这个

#define SAFE_CALL(func) \
do {\
    if (errorCode = (func)) \
        printError(errorCode, #func, __LINE__, __FILE__);\
} while(0)

SAFE_CALL(functionName(params));

关于c++ - 获取在 C/C++ 中调用的最后一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577196/

相关文章:

c++ - 需要字节序解决方法

c - 下面的代码片段产生相同的输出。但哪个是正确的呢?

c++ - gsl_histogram : Value being equal to an edge between two bins, 值会分配给哪个bin?

c++ - sockaddr、sockaddr_in 和 sockaddr_in6 有什么区别?

c++ - 使用 samplegrabber 过滤器的音频/视频同步问题

c++ - SURF 和 SIFT 的旋转变化性能

c++ - C++中的继承

c++ - 将 Fortran 77 函数传递给 C/C++

angular - 使用 API 的 Ionic 3 登录身份验证 - 无法读取 null 的属性 'json'

c# - 为什么我无法访问通过 POST 请求以编程方式添加的静态文件?