我遇到了几次遇到主题行中列出的CL.exe错误的情况。我对MSB6006错误的理解是,这些错误是由Visual Studio编译器编辑例程中的错误引起的。我不知道这很重要,但是我正在使用VS 2019 Community Edition版本16.1.6。

在第一种情况下,至少可以告诉您原因。

//  Warning C6001   Using uninitialized memory 'testbool'.
//  Error   MSB6006 "CL.exe" exited with code 2.

#include <stdbool.h>

int main()
{
    bool testbool;

    if (testbool == true) {

    }
}


下面是另一个示例,但没有指示原因:

//  Error   MSB6006 "CL.exe" exited with code 2.
bool testFun()
{

}

int main()
{
    bool testBool;
    testBool = testFun();
}


另一个示例,使用具有相同问题的int

//  Error   MSB6006 "CL.exe" exited with code 2.
bool testFun()
{

}

int main()
{
    int testInt;
    testInt = testFun();
}


当我尝试打印尚未初始化的int时,也出现了错误。该问题已在this question中解决,但直到发布此问题我才看到答案。另外,如果您仅打印字符串,也不会出现问题。

我将在下面回答问题。

更新18/10/19

我将代码更改为#include stdbool.h。得到了相同的结果。进一步查看时,一条C4716错误消息闪烁了几秒钟,然后才被MSB6006消息覆盖。因此,问题不在于编译器找不到问题,而仅仅是显示问题。

还包括一个具有相同问题的int的示例,正​​如我所说,该问题已在上一个问题中得到解决。

最佳答案

在第一种情况下,请按其说明进行操作并初始化testBool

在第二种情况下,对我来说不明显的是,您无法在函数声明中指定返回值,然后无法返回任何内容。或者,如果您有一个return语句但未指定值,则会收到消息Error C2561 'testFun': function must return a value告诉您如何解决此问题,而不是MSB6006错误。

希望这对某人有帮助。

关于c - VS 2019中使用代码2退出的MSB6006“CL.exe”的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57198295/

10-12 13:30