对VS2010文本编辑器的好奇心

A curiosity about the VS2010 text editor

本文关键字:好奇心 编辑器 文本编辑 VS2010 文本      更新时间:2023-10-16

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

class A
{
    public;
    A() throw(std::bad_alloc);
};

但是,如果我在A.cpp文件中包含<iostream>标头,如下所示,则即使关闭A.cpp,红线也会在A.h文件中消失。这怎么可能?

#include <iostream>
#include "A.h"
A::A() { throw std::bad_alloc(); }

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

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

但你是对的,如果你切换包含的顺序,以便项目不会编译,它仍然会删除红色下划线。

Visual Studio是为所有C++程序员编写的。这意味着它不能假设头文件总是包含它们所需的所有内容。在标头未明确包含的所有内容下放置红线对于那些在严格环境中工作的开发人员来说意味着很多误报,在严格环境中,标头按特定顺序包含,并具有依赖项。

因此,Visual Studio试图弄清楚你的意思,而不是假设你的标题能够独立存在。

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