我正在使用一个 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/