C++学习(7)——一些常见的C ++问题

0.8 - 一些常见的C ++问题

亚历克斯于2007年12月16日| 最后由ALEX于2019年1月10日修改

在本节中,我们将解决新程序员似乎以相当高的概率运行的一些常见问题。这并不是一个完整的编译或执行问题列表,而是一个非常基本问题的实用解决方案列表。如果您对可能添加到此列表中的其他问题有任何建议,请将其发布在下面的评论部分中。

 

一般运行时问题

问:执行程序时,控制台窗口会闪烁,然后立即关闭。

 

首先,添加或确保以下行靠近程序顶部(Visual Studio用户,确保它们出现在#include“pch.h”或#include“stdafx.h”之后,如果存在的话):

 

1

2

#include <iostream>

#include <limits>

 

其次,在main()函数的末尾添加以下代码(在return语句之前):

 

1

2

3

std::cin.clear(); // reset any error flags

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore any characters in the input buffer until we find an enter character

std::cin.get(); // get one more char from the user

 

这将导致程序在继续之前等待用户按下某个键,这样您就可以在操作系统关闭控制台窗口之前检查程序的输出。

其他解决方案,例如通常建议的系统(“暂停”)解决方案可能仅适用于某些操作系统,应该避免。

Start With Debugging(F5)模式下运行程序时,较旧版本的Visual Studio可能不会暂停。尝试在Start Without Debugging(ctrl-F5)模式下运行。

问:我运行程序并获得一个窗口但没有输出。

 

您的病毒扫描程序或反恶意软件可能会阻止执行。尝试暂时禁用它,看看是否存在问题。

问:我的程序编译但无法正常工作。我该怎么办?

 

调试它!有关如何在第1章或第2章中诊断和调试程序的提示。

一般编译时问题

问:当我编译程序时,我收到有关未解析的外部符号_main或_WinMain @ 16的错误

 

这意味着您的编译器找不到您的main()函数。所有程序都必须包含main()函数。

有几点需要检查:
a)您的代码是否包含名为main的函数?
b)主要拼写是否正确?
c)编译程序时,是否看到包含函数main()的文件被编译?如果没有,请将main()函数移动到一个,或将文件添加到项目中(有关如何执行此操作的详细信息,请参阅第2.8- 包含多个代码文件的程序)。
d)您是否创建了一个控制台项目?尝试创建一个新的控制台项目。

问:我正在尝试使用C ++ 11/14/17 / XX功能,但它不起作用

 

如果您的编译器是旧的,它可能不支持这些最新添加的语言。在这种情况下,升级您的编译器。

或者,您可以尝试查看您的编译器是否支持这些,但默认情况下它已关闭。对于GCC / G ++,您可以尝试传递编译器标志-std = c ++ 11,-std = c ++ 14或-std = c ++ 17。对于Code :: Blocks,请确保设置了适当的全局编译器设置。我们将在第0.6- 安装集成开发环境(IDE)中展示如何执行此操作。

问:尝试使用cin,cout或endl时,编译器称cin,cout或endl是“未声明的标识符”

 

首先,请确保在文件顶部附近包含以下行:

1

#include <iostream>

 

其次,确保每次使用cin,cout和endl都以“std ::”作为前缀。例如:

 

1

std::cout << "Hello world!" << std::endl;

 

如果这不能解决您的问题,那么可能是您的编译器已过期,或者安装已损坏。尝试重新安装和/或升级到最新版本的编译器。

问:当尝试使用endl结束打印行时,编译器说end1是'未声明的标识符'

 

确保你没有将endl中的字母l(小写字母L)误认为是数字1. endl是所有字母。确保您的编辑器使用的字体清楚地表明字母小写字母L,大写字母i和数字1之间的差异。字母大写字母o和数字零字母很容易混淆在许多非编程字体中。

Visual Studio问题

问:使用Microsoft Visual C ++进行编译时,会收到C1010致命错误,并显示错误消息,如“c:\ vcprojects \ test.cpp(263):致命错误C1010:查找预编译头指令时意外结束文件”

 

当Microsoft Visual C ++编译器设置为使用预编译的头文件但是一个(或多个)C ++代码文件不#include“stdafx.h”或#include“pch.h”作为代码的第一行时,会发生此错误文件。

我们建议的解决方法是关闭预编译的头文件,我们将在第0.7- 编译您的第一个程序时向我们展示如何操作。

如果你想保持预编译的头文件被打开,为了解决这个问题,只需找到产生错误的文件(在上面的错误中,test.cpp是罪魁祸首),并在最顶层添加以下行:文件):

 

1

#include "pch.h"

 

较旧版本的Visual Studio使用“stdafx.h”而不是“pch.h”,因此如果pch.h无法解决问题,请尝试使用stdafx.h。

请注意,对于具有多个文件的程序,每个C ++代码文件都需要从此行开始。

或者,您可以关闭预编译的标头。

问:Visual Studio出现以下错误:“1MSVCRTD.lib(exe_winmain.obj):错误LNK2019:未解析的外部符号_WinMain @ 16在函数”int __cdecl invoke_main(void)“中引用(?invoke_main @@ YAHXZ)”

 

您可能已经创建了Windows图形应用程序而不是控制台应用程序。重新创建项目,并确保将其创建为Windows(或Win32)控制台项目。

问:当我编译程序时,我收到有关“无法找到或打开PDB文件”的警告

 

这是一个警告,而不是错误,所以它不应该影响您的程序。但是,这很烦人。要解决此问题,请进入“调试”菜单 - >“选项和设置” - >“符号”,然后选中“Microsoft Symbol Server”。

还有别的

问:我还有其他一些我无法弄清楚的问题。我怎样才能快速得到答案?

 

随着您对材料的进展,您无疑会遇到问题或遇到意想不到的问题。下一步做什么取决于你的问题。但总的来说,你可以尝试一些事情。

首先,问问谷歌。找到一个很好的方式来表达您的问题并进行Google搜索。如果您收到错误消息,请使用引号将确切的消息粘贴到Google中。
可能有人已经问了同样的问题并且有一个答案在等着你。

如果失败,请询问问答板。有一些网站专为编写问题和答案而设计,例如Stack Overflow。尝试在那里发布您的问题。请记住要彻底了解您的问题,并包括所有相关信息,例如您所使用的操作系统以及您正在使用的IDE。

转载自:https://www.learncpp.com/cpp-tutorial/a-few-common-cpp-problems/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值