gpt4 book ai didi

c++ - 使用gcc在C++中将静态类型转换为字符串

转载 作者:太空狗 更新时间:2023-10-29 20:15:16 25 4
gpt4 key购买 nike

这与 Is it possible to print a variable's type in standard C++? 是同一个问题但我不想要 RTTI。我正在使用表达式模板(例如 Eigen)编写代码,这意味着我的变量类型可能真的涉及到,而且我不知道实际类型。但是,编译器知道这些类型并且可以在出现问题时告诉我:

error: ‘const struct Eigen::EigenBase<Eigen::Matrix<double, 1, 1, 0, 1, 1> >’ ...

有什么方法可以将变量名转换为具有(静态)类型名称的字符串,以便我可以在不破坏程序的情况下调试程序?例如

int a;
M b;
cout << TYPEOF(a) << endl << TYPEOF(b) << endl;

会打印

int
const struct Eigen::EigenBase<Eigen::Matrix<double, 1, 1, 0, 1, 1> >’

最佳答案

typeid 可以应用于一个类型(5.2.8p4):

std::cout << typeid(int).name() << '\n'
<< typeid(M).name() << '\n';

这不涉及任何运行时开销。

关于c++ - 使用gcc在C++中将静态类型转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com