一些常见的 C++ 问题

在本节中,我们将解决新程序员很有可能遇到的一些常见问题。如果您对可能添加到此列表中的其他问题有任何建议,请在下面的评论部分中发布。

一般运行时问题

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

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

#include <iostream>
#include <limits>

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

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

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

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

当程序以调试启动 (F5)模式运行时,旧版本的 Visual Studio 可能不会暂停。尝试在“启动但不调试”(Ctrl-F5)模式下运行。

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

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

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

调试一下吧!教程后面有关于如何诊断和调试程序的提示。

一般编译时问题

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

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

a) 您的代码是否包含名为 main 的函数?
b) main 拼写正确吗?
c) 当您编译程序时,您是否看到包含函数 main() 的文件被编译?如果没有,请将 main() 函数移至该函数,或者将该文件添加到您的项目中。
d) 您是否创建了控制台项目?尝试创建一个新的控制台项目。

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

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

对于现代 IDE/编译器,您的编译器可能默认使用较旧的语言标准。

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

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

#include <iostream>

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

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

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

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

确保您不会将 endl 中的字母 l(小写 L)误认为是数字 1。endl 都是字母。确保您的编辑器使用的字体能够清楚区分小写字母 L、大写 i 和数字 1 之间的差异。此外,在许多非编程字体中,大写字母 o 和数字零很容易混淆。

问:编译程序时,出现“文件末尾无换行符”错误

C++ 标准要求所有源 (.cpp) 文件以换行符结尾。这很愚蠢,但事实就是如此。转到源文件的底部,按 Enter 键,保存并重新编译。

Visual Studio 问题

问:使用 Microsoft Visual C++ 进行编译时,出现 C1010 致命错误,并显示类似“c:\vcprojects\test.cpp(263) :fatal error C1010: Outstanding end of file whilelooking for precompiled headerdirective”的错误消息

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

我们建议的修复方法是关闭预编译头。

如果您想保持预编译头打开,要解决此问题,只需找到产生错误的文件(在上面的错误中,test.cpp 是罪魁祸首),然后在最顶部添加以下行文件):

#include "pch.h"

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

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

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

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

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

这是警告,而不是错误,因此它不会影响您的程序。然而,这很烦人。要修复它,请进入“调试”菜单 ->“选项和设置”->“符号”,然后选中“Microsoft Symbol Server”。

原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/common-cpp-problems/

(0)
上一篇 2023年9月27日 下午10:59
下一篇 2023年9月27日 下午11:31

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注