首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对VS2010文本编辑器的好奇心

对VS2010文本编辑器的好奇心
EN

Stack Overflow用户
提问于 2012-05-02 23:17:42
回答 2查看 191关注 0票数 1

给出下面的A.h文件(请注意,我故意没有在这个文件中包含<iostream>头文件)。然后,VS2010文本编辑器在std下面显示一条红线,因为它无法识别此名称。

代码语言:javascript
运行
复制
class A
{
    public;
    A() throw(std::bad_alloc);
};

但是,如果我像下面这样在A.cpp文件中包含<iostream>头文件,即使在关闭A.cpp时,A.h文件中的红线也会消失。这怎么可能呢?

代码语言:javascript
运行
复制
#include <iostream>
#include "A.h"
A::A() { throw std::bad_alloc(); }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-03 01:23:09

添加一个包含A.h但不包含<iostream>的新C++文件。std下的红色下划线将重新出现。

VS2010知道哪些文件包含该头文件。如果他们中的任何一个人不知道std,它会指出问题所在。

但是你是对的,如果你改变了includes的顺序,使得项目不会编译,它仍然会删除红色下划线。

票数 1
EN

Stack Overflow用户

发布于 2012-05-03 01:49:05

Visual Studio是为所有C++程序员编写的。这意味着它不能假设头文件总是包含它们所需的所有内容。对于那些在严格的环境中工作的开发人员来说,在没有显式包含在header中的所有内容下加上红线将意味着大量的误报。在严格的环境中,header是以特定的顺序包含的,具有依赖关系。

所以Visual Studio试图弄清楚你的意思,而不是假设你的头能够独立存在。

在您的源代码中,这可能不是最佳实践,但他们必须考虑到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10416662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档