0.7常见C++问题解答

2023-12-24 00:18
文章标签 c++ 常见 问题解答 0.7

本文主要是介绍0.7常见C++问题解答,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这一节我们将讨论一些新手程序员有很高几率碰到的问题。篇幅所限,无法列出全部问题,暂为一些基本的问题提供务实的解决方案,后续也会根据读者的需求加以补充,欢迎提问。

问题一:从IDE运行程序时,控制台窗口闪烁一下然后迅速关闭怎么办?

答:某些编译器在程序运行结束后不会自动暂停,比如Bloodshed的Dev C++。如果遇到这种情况,采取以下两步即可解决问题:首先在程序开头添加:#include<iostream>,在main函数的末尾,返回语句(例如return 0)之前添加如下代码:

std::cin.clear(); // 重置所有错误标识std::cin.ignore(32767, '\n'); // 在键入下一个字符前忽略所有输入缓冲区的字符std::cin.get(); // 等待从用户处获取输入

这样程序在继续运行之前会等待你的输入,让你在窗口关闭之前有时间看到输出结果。

其他的解决方案,例如常有人建议使用的system(“pause”);语句,我们是不推荐使用的,因为它只能工作在特定的操作系统上。

注:Visual Studio中,调试(Debug-> Start Debugging,调试->开始调试)状态下控制台程序运行到最后也不会暂停。如果你想程序暂停,可以使用上面的方法,或者运行Debug ->Start Without Debugging(调试->开始执行(不调试))。

问题二:使用Microsoft Visual C++编译程序时收到如下错误提示:“c:vcprojectstest.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive”(致命错误C1010:寻找预编译头文件时遇到意外的文件结尾)

答:这个错误发生在Microsoft Visual C++编译器被设置为使用预编译头文件,但你却没有在程序的开头引用stdafx头文件,解决这个问题的方法是,根据错误提示确定产生错误的文件(例如上面提示为test.cpp),然后在该文件的第一行添加如下代码:

#include "stdafx.h"

注意如果程序包含多个文件,那么每一个C++文件都需要以此开头。

或者,你也可以选择关闭预编译头文件。

问题三:当时用cin、cout、endl时,编译器提示cin、cout、endl为“undeclared identifier”(未定义的标识符)。

答:首先确保程序中添加了#include <iostream>语句。然后,确保cin、cout、endl有前缀std::,例如:

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

问题四:当使用endl作为换行符时,编译器提示“end1 is an undeclared identifier”(end1为未定义的标识符)。

答:确保你没有把endl中的小写字母l(L)写成数字1,推荐可以明确区分小写的L,大写的i,数字1的编程字体,非编程字体也难以区分字母O和数字0。

问题五:我的程序编译成功但不能正常工作(运行时出错、输出错误等等)怎么办?

答:这就需要调试程序了,你可以查看第一章,尤其是第一章中的1.11节调试程序(步进和断点)和1.11a调试程序(看变量和调用堆栈)。

问题六:如何打开Visual Studio中的显示行号功能?

答:点击工具栏中的tools->options(工具->选项),展开文本编辑器,点击C/C++中的常规选项,即可看到显示行号的复选框。

问题七:在Visual Studio 2010中编译程序遇到关于COFF文件无效的错误提示,怎么解决?

答:如果看到如下的错误信息: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

你遇到了微软操作系统与编译器不兼容的错误,与你的代码无关。最好的选择是下载安装Visual Studio 2010 Service Pack 1(https://www.microsoft.com/en-us/download/details.aspx?id=23691&wa=wsignin1.0)。

如果仍然无法解决,可看看看Stack Overflow(http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval),上面有许多关于这个问题的产生原因和解决办法。

问题八:编译程序时遇到未解决的外部符号_main或者_WinMain@16的错误提示。

答:这意味着编译器无法找到main()函数,所有的程序都必须包含main()函数作为程序的入口。检查一下以下几个方面:

  • 代码中有名为main的函数吗?
  • main拼写正确吗?(有没有写成mian)
  • 你所编译的文件是否包含项目中的main部分,如果不包含,将main函数移动到其中或者将其添加到你的项目中。详见8节:多文件程序

问题九:编译程序时遇到警告warnings:“Cannot find or open the PDB file”( “无法找到或打开PDB文件”)。

答:这是警告,而非错误,不会影响程序的正常运行,但看着总是十分恼人。解决方法是点击Debug -> Options and Settings -> Symbols,检查“Microsoft Symbol Server”(调试->选项->符号->Microsoft符号服务器)。

问题十:我使用的是Code::Blocks(或者在命令行中使用g++),所有C++11的功能都无法正常使用,怎么办?

答:Code::Blocks中,到Project->Build options->Compiler settings->Compiler flags,检查“Have g++ follow C++11 ISO C++ language standard”,详情参看0.5节:安装集成开发环境IDE。

如果在命令行上用g++编译,则添加以下命令:-std=c++11。

问题十一:Visual Studio中遇到如下错误提示:“1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ)”

答:这种情况很有可能是你创建的项目类型有问题,确保创建的项目为Win32 Console Application(Win32控制台应用程序),而不是Win32 Project(Win32项目)。

问题十二:运行程序时窗口出现,但却没有任何输出,是什么原因?该怎么办?

答:你的病毒扫描程序可能会阻止程序的运行,暂时禁用杀毒软件以确定是否是这个原因造成的。

我有其他无法解决的问题,在那可以快速得到答案呢?

答:跟随本教程学习的过程中,你无疑会遇到各种各样意想不到的问题,最好最快的办法是去专门的编程问题问答网站比如Stack Overflow,贴上你的问题,记得描述详细并附上使用的操作系统、IDE等相关信息。你也可以直接在本教程下方留言,我们或者其他读者也会尽力为你解答。

译者注:Visual Studio用户建议查看MSDN上的技术文档:https://msdn.microsoft.com/zh-cn/library/ms310241 。

转载请参看关于博客页面相关要求。

这篇关于0.7常见C++问题解答的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/529967

相关文章

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字