C++ - 有什么方法可以获取当前执行行

标签 c++ visual-c++ macros logic

我需要创建一个异常处理,因为我还要求打印操作的状态,如

“文件打开:操作成功完成”

“文件关闭:操作成功完成”,

等等

是否有像 __LINE__,__FUNCTION__,__FILE__ 这样的宏?

或者是否有任何提升功能可用于执行此操作?

最佳答案

我想答案是你想对正在评估的表达式进行字符串化?

代码:

#include <stdexcept>
#include <sstream>
#include <iostream>

void check_result(bool result, const char* file, int line_number, const char* line_contents)
{
    if (!result) {
        //for example:
        std::stringstream ss;
        ss << "Failed: " << line_contents << " in " << file << ' ' << line_number;
        throw std::runtime_error(ss.str());
    }
}

#define CALL_AND_CHECK(expression) check_result((expression), __FILE__, __LINE__, #expression)

bool foobar(bool b) { return b; }

int main()
{
    try {
        CALL_AND_CHECK(foobar(true));
        CALL_AND_CHECK(foobar(false));
    } catch (const std::exception& e) {
        std::cout << e.what() << '\n';
    }
}

关于C++ - 有什么方法可以获取当前执行行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115193/

相关文章:

c++ - 使用std::list c++在不使用直接循环的情况下将文本文件读入列表

c# - 将结构列表从 C# 转换为 C++

c++ - 程序入口点在哪里

c - 宏中的输出问题?

c++ - 无法足够快地写入位集

c++ - 从 Vector 中删除 unique_ptr 并将它们用作新 Struct 的参数

visual-studio - 如何在目标之间创建人为的循环依赖

macros - 具有两个参数的宏 SAS 9.4

macros - 使用未声明的标识符断言 Xcode

c++ - 将字符串数组指向 void 内