我遇到了几个例子,在这些情况下,我得到了主题行中列出的CL.exe错误。我对MSB6006错误的理解是,这些错误是由Visual编译器编辑例程中的错误引起的。我不知道这是否重要,但我正在使用VS 2019社区版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中解决了,但是直到我发布了这篇文章,我才看到了这个答案。而且,如果你只是打印一个字符串,你就不会遇到这个问题。
我将回答以下问题。
更新08/10/19
我将代码更改为#include stdbool.h
。得到了同样的结果。进一步研究它时,C4716错误消息在被MSB6006消息覆盖之前会闪烁一小部分秒。所以问题不是编译器找不到问题,而是显示的问题。
还包括一个int
的例子,它具有相同的问题,就像我说过的,这个问题在以前的问题中已经解决了。
发布于 2019-07-25 09:15:23
在第一种情况下,按它说的做并初始化testBool
。
在第二种情况下,我并不认为您不能在函数声明中指定返回值,然后无法返回任何内容。或者,如果您有一个return
语句而没有指定一个值,那么您将得到消息Error C2561 'testFun': function must return a value
来告诉您如何修复这个问题,而不是MSB6006错误。
希望这能帮上忙。
发布于 2019-08-09 04:15:46
不,你在这里没有理由。此警告并不是生成失败的原因。而且你似乎仍然遗漏了一些错误信息。我认为MSB6006错误代码仅仅意味着编译器与错误代码一起退出。
如果这确实是一个C程序,那么它是无效的,因为bool
是_Bool
的typedef
,并且只由似乎不存在的#include
ing <stdbool.h>
引入。在这方面应该有一个错误。
发布于 2019-08-09 00:48:58
尝试将一个返回添加到您的main,我遇到了这个问题,不是main,而是当我忘记了一个非空函数中的返回时。希望它能帮上忙
https://stackoverflow.com/questions/57198295
复制相似问题