2016-01-29 122 views
-6

我一直在努力完成“编程:使用C++的原理和实践”一书,此示例旨在说明如何在类型转换中丢失数据。但是当我试图执行它时,它一直告诉我'Main':必须返回一个值。我尝试使用“返回0;”在while循环的花括号之后,但是它给出了“未解析的外部”的错误。主要必须返回一个值

我已将本书中的代码复制到Visual Studio中,并且我复制的所有内容都按预期工作 - 任何人都可以告诉我如何修复此问题吗?我不知道为什么会发生这个具体的例子,或者如何让它停止要求返回值。

对不起,如果这是愚蠢的,我很缺乏经验,我已经尝试谷歌搜索答案,但建议像“返回0”的解决方案不工作:)!

#include "std_lib_facilities.h" 

int main() 
{ 
    double d = 0; 

    while (cin >> d) 
    { 

     int i = d; 
     char c = i; 
     int i2 = c; 
     cout << "d==" << d 
     << " i==" << i 
     << " i2==" << i2 
     << " char(" << c << ")\n"; 
    } 
} 
+1

显示整个程序。我会猜测它是'cout',并且你既不包括'iostream',也不''使用名称空间标准;''。你仍然需要从main中返回一些东西。 – zero298

+2

这个简单的5字错误信息的哪部分你不明白? – EJP

+1

噢,对不起,我忘了包括我正在使用“#include”../../std_lib_facilities.h“这是给我们使用的东西! – Dean

回答

3

我尝试使用 “返回0;”在while循环的花括号之后,但是它给出了“未解析的外部”的错误。

这是修复第一个问题时发现的一个单独的,无关的问题。添加回报,然后处理未解决的外部错误。

+7

问题是,它不应该是一个错误。 'main'不需要返回语句,即使它需要返回类型'int'(这是唯一的)。 –

+0

虽然我认为这很有帮助,但这不是一个真正的答案。 – erip

+1

@erip OP认为“返回0”不起作用,因为会弹出另一个错误,而我的答案是它确实有效,OP应该保留它。它不回答什么是未解决的外部错误,但这是一个单独的问题。 –

-1

如果这是您的整个程序,您未解决的外部问题很可能是iostream。你需要包含它并使用正确的名称空间。

考虑下面的代码:

#include <iostream> 

using namespace std; 

int main() { 
    cout << "Hello World!" << endl; 
    return 0; 
} 

更重要的是,放弃using声明和使用std::cout,这样你就不必担心命名空间冲突。看到这个问题Why is “using namespace std;” considered bad practice?

#include <iostream> 

int main() { 
    std::cout << "Hello World!" << std::endl; 
    return 0; 
} 
+0

或'使用std :: cout;使用std :: cin;' – erip

+0

Downvote甚至提到'using namespace std'。答案也是不正确的,但那是第二个。 – SergeyA

+1

@SergeyA我将确保downvote每一个JavaScript问题,我看到从现在开始缺少''use strict''语句。 – zero298

相关问题