如何在第一时间追溯导致编译器错误的原因?我的意思是我的代码中的哪一部分调用了该错误?
例如,我使用VS2017和默认编译器,我得到以下编译错误:
C2070 'unsigned char []': illegal sizeof operand | type_traits 1227
Run Code Online (Sandbox Code Playgroud)
哪个指向标准库头type_traits,但这是没有意义的,因为我不知道我的代码的哪一部分导致它,所以我如何跟踪它回到我的代码中的原始点?
现在我只看到一个选项,那就是系统地评论我的代码的一部分,直到我没有得到那个错误.必须有一些东西来跟踪它.
我有以下代码:
class Base
{
public:
Base(int test) { std::cout << "Base constructor, test: " << test << std::endl; }
};
class Derived : public Base
{
private:
int variable;
public:
Derived() :
variable(50),
Base(variable)
{}
};
Derived derived;
Run Code Online (Sandbox Code Playgroud)
我希望输出将是:“基本构造函数,测试:50”,但事实并非如此,因为Base构造函数在variable初始化之前被调用,没有错误或警告,它只是编译。
有什么办法可以让Base构造函数在之后被调用吗?或者这通常是糟糕的设计?
我试图通过将它们放入构造函数中来摆脱所有 init 方法及其调用,这种行为阻止我这样做。
为什么 QT 应用程序中的最后一个错误始终为零?
SetLastError(23);
qDebug() << "LastError: " << GetLastError();
Run Code Online (Sandbox Code Playgroud)
预期输出:LastError:23
实际输出:LastError:0
我无法用谷歌搜索任何关于这个问题的信息。QT 是否有这些功能?