2017-08-17 78 views
4

我在VS2010中开发,希望将代码添加到已经存在的项目中。顺便说一句,这是一个Win32/MFC。#include“MyClass.h”和#include“。 myclass.h”有什么区别?

我不禁注意到,在MyClass类(在这种情况下MyClass的是CDialog类的扩展)以下被列入在cpp文件的顶部:

#include "MyClass.h" 
#include ".\myclass.h" 

我注意到第二个包含是没有大写的输入,但我不明白为什么?

+0

Windows文件名不区分大小写。名称“MyClass.h”和“myclass.h”是相同的。 –

回答

1

MyClass.h” 将在您的项目设置中定义的INCLUDE_DIR路径上搜索。

将在与当前文件相同的目录中搜索“./myclass.h”。

Windows文件名不区分大小写,所以如果您的工作目录位于包含路径中,这些行指向同一个文件。

这种冗余可能是为VS的方式,以确保该文件将被包含至少一次...

编辑:感谢阿恩沃格尔,我累了,写了假的东西。 您的编译器只会查找您的头文件如果文件名是#include <file.h> 但我想冗余是要符合所有文件系统。

+0

不正确,请参阅https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx –

+0

糟糕!你完全正确,我很累......对不起,我编辑了我的帖子。谢谢 ! – Caesar

+0

我的意思是文档中提到的“。\ something.h”和“something.h”没有区别。引号和尖括号只有区别。细节是实现定义的,甚至取决于您所建议的操作系统。 –

0

.\说要在当前目录中查找。我在与头部的包括卫兵猜测,这不会是一个问题。

0

#include "MyClass.h"是来自环境路径,而#include ".\myclass.h"来自当前路径。

大多数时候,“MyClass.h”在你项目的inc目录下,但是你的MyClass.cpp在其他路径下。

相关问题